|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Добрый день! Прошу помощи. Сразу скажу, что я - чайник и могу изобразить только что-то очень примитивное. А задача сейчас передо мной такая: Есть папка 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 будет очищаться примерно раз в неделю. В общем, идея такая, но сама не напишу. Если есть идея получше, я только ЗА. С уважением.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 11:48 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Njura Как быть? Поскольку нужно сохранять данные между запусками, нужно статическое хранение. Тут однозначно файл - с реестром из батника работать невкусно. Остальное просто. Перебор существующих файлов - это тривиально. Арифметика, включая zerofill - тоже тривиально. Главное - не забыть включить отложенное расширение. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 14:00 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Спасибо, конечно, но я ничего не поняла. Говорю же- чайник! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 14:06 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
В батнике надо написать: 1. Считывание текущего значения счётчика из файла. 2. Перебор файлов с их переименованием в новосформированные имена и увеличением счётчика. 3. Сохранение нового значения счётчика в файл. Что именно из этого вызывает затруднение? PS: Только не говорите "всё", потому что тогда ответом будет "отойди и ничего не трогай". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 14:41 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 14:48 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Без файла со списком можно и обойтись, наверное... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 14:59 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Без файла со списком можно и обойтись, наверное... В процессе могут и подкинуть файлы. Хотя это скорее для перестраховки, потому что ранее писал с более долгими обработками, чем лишь переименование. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 15:34 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Без файла со списком можно и обойтись, наверное... Угу. FOR /F %%x IN ('dir /b x:\folder\*.txt') DO wadman В процессе могут и подкинуть файлы. В показанном варианте это пофиг - результат команды кэшится, и подкинутые не будут обработаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 16:09 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
AkinaFOR /F %%x IN ('dir /b x:\folder\*.txt') DO Это ещё что за фигня? Более чем достаточно Код: sql 1.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 16:32 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Код: sql 1.
Может и не order* придти. Кто их знает? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 16:45 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Да, вдруг они не додумаются указать x:\folder\order*.txt... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 18:10 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это ещё что за фигня? Более чем достаточно Код: sql 1.
Надо как бы обрабатывать имена файлов каталога, а не их содержимое. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:42 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Akina а не их содержимое. Ну и где тут содержимое? Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:28 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Спасибо всем! Вот что я наваяла (в пианиста не стрелять!): автор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. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:13 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
NjuraЯ не знаю куда и как пристроить диапазон номеров 28001-28400. В проверки переменной счётчика сразу после считывания файла max_id.txt и сразу после инкремента. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:40 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Я вроде понимаю идею: если значение переменной счётчика меньше 28400, то выполняется цикл, иначе переменной присваивается значение 28001. Так? Но я не могу осилить синтаксис. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:15 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
"IF /?" или "HELP IF" в командной строке поможет с его освоением. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:16 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
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 вообще не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:03 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Njuraвообще не нужен. Этот хвост в любом случае не нужен, он совершенно бредов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:16 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Серьезно? Кое-кто из форумчан обиделся бы. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 18:05 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Этому "кое-кому" уже наглядно показали почему он неправ выше. Переключитесь из write-only mode. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 18:11 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да ну вас! Я тут два дня голову ломаю, а вы мне такое! И не надо мне говорить: автор"отойди и ничего не трогай". Нету у меня такой опции - отойти. Вместо меня никто не подойдёт - некому. Процесс был запущен криво, модифицировать приходится на ходу, иначе штрафы. Этот батник мне нужен как костыль, чтобы дотянуть до полноценной интеграции. У меня нет надобности писать командные файлы пачками каждый день, дай бог раз в год что-то выстрелит. Потому штудировать всю документацию от А до Я не имею времени, да и смысла особенного не вижу- до следующего раза забудется. И да, денег мне за это не заплатят и медаль не повесят. Но и с работы не выгонят :) В общем, спасибо вам конечно за ответы. Но если вы отвечаете в таком тоне, то зачем вообще отвечать? Проходите гордо мимо дурацких вопросов, и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 18:30 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
NjuraПроцесс был запущен криво, модифицировать приходится на ходу, иначе штрафы. Вы их платите из своего кармана? Если нет, то это не ваша проблема, а того, кто поручил работу некомпетентному сотруднику. Делайте что можете, последствия - не ваша забота. NjuraПотому штудировать всю документацию от А до Я не имею времени, да и смысла особенного не вижу- до следующего раза забудется. Так и я не помню ничего наизусть. Составление каждого батника это постоянное чтение вышеназванной справки и куча экспериментов пока не заработает так, как надо. Непонятно почему Вы считаете себя выше этого. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 18:39 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Вы их платите из своего кармана? Если нет, то это не ваша проблема, а того, кто поручил работу некомпетентному сотруднику. Делайте что можете, последствия - не ваша забота. Нет, не из своего конечно. Просто натура дурацкая. Надо было наверное в пожарные идти. К тому же самой интересно. Вызов так сказать. Так и я не помню ничего наизусть. Составление каждого батника это постоянное чтение вышеназванной справки и куча экспериментов пока не заработает так, как надо. Непонятно почему Вы считаете себя выше этого. Неправда ваша! Я забила на полтора дня на все остальные задачи и эксперементировала до мятликов в глазах, читая, разумеется, и справки, и форумы. Но я не программер ни разу, потому это как с иностранным языком, которым на практике не пользуешься. Вроде слова знаешь, а в предложение их составить трудно, учитывая ещё предлоги и пр. Вот и всё. А если вы не помните ничего наизусть, но заходите лишь для того, чтобы посоветовать почитать справку, или уличить другого участника форума в неправоте, то это как-то странно, согласитесь. В любом случае спасибо вам ещё раз, и закончим на этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 19:13 |
|
BAT файл - циклическое переименование файлов
|
|||
---|---|---|---|
#18+
NjuraА если вы не помните ничего наизусть, но заходите лишь для того, чтобы посоветовать почитать справку, или уличить другого участника форума в неправоте, то это как-то странно, согласитесь. Да нет, это как раз нормально. "Я только что прочитал справку и тебе рекомендую" - короче, чем копипастить два экрана текста. Ну а для "не программеров ни разу" есть раздел "вакансии", где определённо найдётся человек, напишущий Вам нужный скрипт за разумную сумму в половину суммы штрафа. Это будет обоюдовыгодное решение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 19:24 |
|
|
start [/forum/topic.php?fid=26&msg=40100987&tid=1491982]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 164ms |
0 / 0 |