ArsenBespalov
02-09-2010, 14:44
Здравствуйте! Возможно такой вопрос уже задавался, но я не нашел, прошу прощения, если повторюсь.
У меня затык произошел, ситуация следующая:
Есть исходные файлы по формату Filename_XXX, где XXX - это порядковый номер.
Есть текстовый файл в котором списком написаны конечные имена фалов, т.е. файл Filename_023 соответствует HelloMyWorld, а, допустим, Filename_010 соответвует ThisIsMyName.
Требуется переименовать (вернее копировать) файлы Filename_XXX в уникальное имя, которое указано в текстовом файле, т.е. допустим Filename_001 берет свое имя из того самого файла в первой строке, а Filename_383 будет соответствовать 383 строка текстового файла.
Вот собственно для того чтобы переименовывать, вернее копировать я использую:
...
set prefix=Filename
set id=1
set DB=%1
...
for /f "eol=;" %%i to (%DB%) do (
copy /y %prefix%_%id% to_dir\%%i
set /a id=id+1
)
где %id% - это порядковый номер, %prefix% - собственно префиск исходных файлов, а %DB% - тот самый файлик, в котором прописаны уникальные имена файлов.
Проблемы на лицо, во-первых у меня не выполняется операция сложения в строке set /a id=id+1, во-вторых я не понимаю как вообще сделать занчение трехзначным, т.е. не Filename_1, а Filename_001, в-третьих я вообще отказался в итоге от данной реализации и начил отталкиваться от того, чтобы временно создавать текстовый файл со списком нужных нам исходных файлов:
dir /b "%prefix%*" > tmp.txt
Но я просто дальше не понимаю, что с этим делать. Ну, получил я список нужных мне файлов, а как этим списком воспользоваться в цикле FOR?
У меня затык произошел, ситуация следующая:
Есть исходные файлы по формату Filename_XXX, где XXX - это порядковый номер.
Есть текстовый файл в котором списком написаны конечные имена фалов, т.е. файл Filename_023 соответствует HelloMyWorld, а, допустим, Filename_010 соответвует ThisIsMyName.
Требуется переименовать (вернее копировать) файлы Filename_XXX в уникальное имя, которое указано в текстовом файле, т.е. допустим Filename_001 берет свое имя из того самого файла в первой строке, а Filename_383 будет соответствовать 383 строка текстового файла.
Вот собственно для того чтобы переименовывать, вернее копировать я использую:
...
set prefix=Filename
set id=1
set DB=%1
...
for /f "eol=;" %%i to (%DB%) do (
copy /y %prefix%_%id% to_dir\%%i
set /a id=id+1
)
где %id% - это порядковый номер, %prefix% - собственно префиск исходных файлов, а %DB% - тот самый файлик, в котором прописаны уникальные имена файлов.
Проблемы на лицо, во-первых у меня не выполняется операция сложения в строке set /a id=id+1, во-вторых я не понимаю как вообще сделать занчение трехзначным, т.е. не Filename_1, а Filename_001, в-третьих я вообще отказался в итоге от данной реализации и начил отталкиваться от того, чтобы временно создавать текстовый файл со списком нужных нам исходных файлов:
dir /b "%prefix%*" > tmp.txt
Но я просто дальше не понимаю, что с этим делать. Ну, получил я список нужных мне файлов, а как этим списком воспользоваться в цикле FOR?