powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Windows [игнор отключен] [закрыт для гостей] / BAT файл - циклическое переименование файлов
30 сообщений из 30, показаны все 2 страниц
BAT файл - циклическое переименование файлов
    #40100916
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Прошу помощи. Сразу скажу, что я - чайник и могу изобразить только что-то очень примитивное.

А задача сейчас передо мной такая:

Есть папка ORDERS, в кторую периодически падают исходники - текстовые файлы.
ORDER12345.txt
ORDER23589.txt
...
ORDER45875.txt


Эти файлы надо переименовать следующим образом: текстовая константа (FLVSI) + номер, находящийся в диапазоне 28001-28400, и убрать расширение txt.

То есть:

ORDER12345.txt -->FLVSI28001
ORDER23589.txt -->FLVSI28002
...
ORDER45875.txt -->FLVSI28400

Переимнованные файлы раз в 5 минут посылаются на FTP (это отдельный батник и он уже готов) и удаляются из папки ORDERS.
Одномоментно в папке ORDERS может быть любое количество файлов, а может не быть их вообще.
То есть если в первом пятиминутном цикле в папке было, к примеру, 2 исходных файла, они были переименованы так:

ORDER12345.txt -->FLVSI28001
ORDER23589.txt -->FLVSI28002

и удалены из папки.

Во втром пятиминутном цикле было, например, три исходных файла. И переименовать их надо вот так:
ORDER12384.txt -->FLVSI28003
ORDER23584.txt -->FLVSI28004
ORDER00001.txt -->FLVSI28005

И так далее, пока не достигнем номера FLVSI28400. И тогда нумерация начинается сначала.

Как быть?
Можно все переименованные файлы бэкапить в ORDERS_BCK и далее при переименовании новых искать в ORDERS_BCK max номер и переименовывать исходник в max+1 ? ORDERS_BCK будет очищаться примерно раз в неделю.

В общем, идея такая, но сама не напишу. Если есть идея получше, я только ЗА.

С уважением..
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40100963
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Njura
Как быть?

Поскольку нужно сохранять данные между запусками, нужно статическое хранение. Тут однозначно файл - с реестром из батника работать невкусно. Остальное просто. Перебор существующих файлов - это тривиально. Арифметика, включая zerofill - тоже тривиально. Главное - не забыть включить отложенное расширение.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40100965
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, конечно, но я ничего не поняла. Говорю же- чайник!
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40100978
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В батнике надо написать:
1. Считывание текущего значения счётчика из файла.
2. Перебор файлов с их переименованием в новосформированные имена и увеличением
счётчика.
3. Сохранение нового значения счётчика в файл.

Что именно из этого вызывает затруднение?

PS: Только не говорите "всё", потому что тогда ответом будет "отойди и ничего не
трогай".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40100982
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Njura,

1. При запуске батника экспортируется список файлов по маске order*.txt > в "списокфайлоф.txt"
https://stackoverflow.com/questions/8612324/is-this-possible-to-write-list-of-file-names-into-a-text-file-using-batch-file-w/8612328
2. Читается последний номер в переменную "номер" из файла "последнийномер.txt" (если его нет, то "номер" = 28001)
3. В цикле переименовываются файлы из "списокфайлов.txt" с учетом "номер". Номер увеличивается, файл удаляется.
4. "номер" экспортируется в файл "последнийномер.txt"
https://stackoverflow.com/questions/155932/how-do-you-loop-through-each-line-in-a-text-file-using-a-windows-batch-file
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40100987
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без файла со списком можно и обойтись, наверное...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101006
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Без файла со списком можно и обойтись, наверное...

В процессе могут и подкинуть файлы.
Хотя это скорее для перестраховки, потому что ранее писал с более долгими обработками, чем лишь переименование.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101024
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Без файла со списком можно и обойтись, наверное...

Угу.

FOR /F %%x IN ('dir /b x:\folder\*.txt') DO

wadman
В процессе могут и подкинуть файлы.

В показанном варианте это пофиг - результат команды кэшится, и подкинутые не будут обработаны.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101039
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaFOR /F %%x IN ('dir /b x:\folder\*.txt') DO

Это ещё что за фигня? Более чем достаточно
Код: sql
1.
FOR %%x IN ( x:\folder\*.txt ) DO


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101044
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Код: sql
1.
x:\folder\*.txt


Может и не order* придти. Кто их знает?
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101073
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вдруг они не додумаются указать x:\folder\order*.txt...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101166
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Это ещё что за фигня? Более чем достаточно
Код: sql
1.
FOR %%x IN ( x:\folder\*.txt ) DO


Надо как бы обрабатывать имена файлов каталога, а не их содержимое.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101244
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
а не их содержимое.
Ну и где тут содержимое?
Код: plaintext
1.
2.
3.
4.
5.
> for %A in (%SystemRoot%\*log) do @echo. "%~A"
 "C:\Windows\DirectX.log"
 "C:\Windows\PFRO.log"
 "C:\Windows\setupact.log"
 "C:\Windows\setuperr.log"
 "C:\Windows\WindowsUpdate.log"
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101305
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем!
Вот что я наваяла (в пианиста не стрелять!):

авторsetlocal enabledelayedexpansion
set prefix=FLVSI
set src=max_id.txt
set /p id=<"%src%"
for /f %%i in ('dir /b x:\folder\order*.txt') do (
ren "%%i" %prefix%_!id!
set /a id=id+1)
for /F %%i in ('dir /B /O x:\folder\FLVSI*') do set "maxnum=%%i"
set max_id=%maxnum:~-5%
echo %max_id% > max_id.txt

То есть файлы переименовываются, счётчик работает, максимальный номер записывается в max_id.txt.
Если можно сделать элегантнее и правильнее, покажите, я только ЗА.

Но!
Dimitry Sibiryakov

Что именно из этого вызывает затруднение?

Я не знаю куда и как пристроить диапазон номеров 28001-28400.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101318
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NjuraЯ не знаю куда и как пристроить диапазон номеров 28001-28400.

В проверки переменной счётчика сразу после считывания файла max_id.txt и сразу
после инкремента.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101331
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вроде понимаю идею: если значение переменной счётчика меньше 28400, то выполняется цикл, иначе переменной присваивается значение 28001. Так?
Но я не могу осилить синтаксис.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101332
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"IF /?" или "HELP IF" в командной строке поможет с его освоением.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101388
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
setlocal enabledelayedexpansion
set prefix=FLVSI
set src=max_id.txt
set /p id=<"%src%"
for /f %%i in ('dir /b x:\folder\order*.txt') do (
ren "%%i" %prefix%_!id!
set /a id=id+1)
for /F %%i in ('dir /B /O x:\folder\FLVSI*') do set "maxnum=%%i"
set max_id=%maxnum:~-5%
echo %max_id% > max_id.txt

То есть файлы переименовываются, счётчик работает, максимальный номер записывается в max_id.txt.
Это всё чушь! Мне не нужен максимальный номер ибо в определённый момент в папке будет вот что:

FLVSI28400
FLVSI28001
FLVSI28002
...

То есть мне нужен номер файла, переименованного последним. Можно ли в каждой итерации цикла выводить результат переименования, то есть только его часть (новый id), в файл с переменной?

тогда весь этот хвост
авторfor /F %%i in ('dir /B /O x:\folder\FLVSI*') do set "maxnum=%%i"
set max_id=%maxnum:~-5%
echo %max_id% > max_id.txt
вообще не нужен.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101394
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Njuraвообще не нужен.

Этот хвост в любом случае не нужен, он совершенно бредов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101408
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Серьезно? Кое-кто из форумчан обиделся бы. :)
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101412
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этому "кое-кому" уже наглядно показали почему он неправ выше. Переключитесь из
write-only mode.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101417
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Да ну вас! Я тут два дня голову ломаю, а вы мне такое!
И не надо мне говорить:
автор"отойди и ничего не трогай".
Нету у меня такой опции - отойти. Вместо меня никто не подойдёт - некому. Процесс был запущен криво, модифицировать приходится на ходу, иначе штрафы. Этот батник мне нужен как костыль, чтобы дотянуть до полноценной интеграции. У меня нет надобности писать командные файлы пачками каждый день, дай бог раз в год что-то выстрелит. Потому штудировать всю документацию от А до Я не имею времени, да и смысла особенного не вижу- до следующего раза забудется.
И да, денег мне за это не заплатят и медаль не повесят. Но и с работы не выгонят :)

В общем, спасибо вам конечно за ответы. Но если вы отвечаете в таком тоне, то зачем вообще отвечать? Проходите гордо мимо дурацких вопросов, и всё.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101420
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NjuraПроцесс был запущен криво, модифицировать приходится на ходу, иначе штрафы.

Вы их платите из своего кармана? Если нет, то это не ваша проблема, а того, кто
поручил работу некомпетентному сотруднику. Делайте что можете, последствия - не
ваша забота.

NjuraПотому штудировать всю документацию от А до Я не имею времени, да и смысла
особенного не вижу- до следующего раза забудется.

Так и я не помню ничего наизусть. Составление каждого батника это постоянное
чтение вышеназванной справки и куча экспериментов пока не заработает так, как
надо. Непонятно почему Вы считаете себя выше этого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101433
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Вы их платите из своего кармана? Если нет, то это не ваша проблема, а того, кто
поручил работу некомпетентному сотруднику. Делайте что можете, последствия - не
ваша забота.

Нет, не из своего конечно. Просто натура дурацкая. Надо было наверное в пожарные идти. К тому же самой интересно. Вызов так сказать.
Так и я не помню ничего наизусть. Составление каждого батника это постоянное
чтение вышеназванной справки и куча экспериментов пока не заработает так, как
надо. Непонятно почему Вы считаете себя выше этого.

Неправда ваша! Я забила на полтора дня на все остальные задачи и эксперементировала до мятликов в глазах, читая, разумеется, и справки, и форумы. Но я не программер ни разу, потому это как с иностранным языком, которым на практике не пользуешься. Вроде слова знаешь, а в предложение их составить трудно, учитывая ещё предлоги и пр. Вот и всё.
А если вы не помните ничего наизусть, но заходите лишь для того, чтобы посоветовать почитать справку, или уличить другого участника форума в неправоте, то это как-то странно, согласитесь.
В любом случае спасибо вам ещё раз, и закончим на этом.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NjuraА если вы не помните ничего наизусть, но заходите лишь для того, чтобы
посоветовать почитать справку, или уличить другого участника форума в неправоте,
то это как-то странно, согласитесь.

Да нет, это как раз нормально. "Я только что прочитал справку и тебе рекомендую"
- короче, чем копипастить два экрана текста.

Ну а для "не программеров ни разу" есть раздел "вакансии", где определённо
найдётся человек, напишущий Вам нужный скрипт за разумную сумму в половину суммы
штрафа. Это будет обоюдовыгодное решение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101444
Njura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда и если мне понадобится, чтобы кто-то что-то сделал вместо меня целиком и полностью, я обязательно обращусь к упомянутому вами разделу.
Пока же я стараюсь сама и попутно учусь новому. И не вижу ничего зазорного в том, чтобы прибегнуть иной раз к помощи коллективного разума.
Я только никак не могу понять, учитывая вашу позицию, что вы делаете в моей теме.
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101449
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BAT-аника
BusyBox/Win (shell-скрипты)
Regina REXX и NetREXX (Java-траспилятор)
Ну и родная для винды "МощнаРакушка".
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101450
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве это непонятно? Обучаю.

Я бы мог выдать готовое решение, но тогда же Вы перестанете стараться и изучать
новое. А это нехорошо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101625
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на самом встратом языке или нормальном современном интерпретаторе типа баш или ps всё это решается быстрее и проще в 1000 раз, даже на нормальном языке программирования задача тривиальна, любой фреймворк интуитивно предоствляет весь функционал файловой системы. нафига эти страдная и рвение задов?
...
Рейтинг: 0 / 0
BAT файл - циклическое переименование файлов
    #40101631
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтарша не осилила даже это, а ты хочешь чтобы она вкуривала
слабодокументированный синтаксис повершелла или устанавливала баш со всем
набором поддерживающих утилит?..

Хотя я бы посмотрел как выглядит решение этой задачи на PS...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Windows [игнор отключен] [закрыт для гостей] / BAT файл - циклическое переименование файлов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]