Пакетное переименование файлов
Здравствуйте! Возможно такой вопрос уже задавался, но я не нашел, прошу прощения, если повторюсь.
У меня затык произошел, ситуация следующая:
Вот собственно для того чтобы переименовывать, вернее копировать я использую: Код:
... Проблемы на лицо, во-первых у меня не выполняется операция сложения в строке set /a id=id+1, во-вторых я не понимаю как вообще сделать занчение трехзначным, т.е. не Filename_1, а Filename_001, в-третьих я вообще отказался в итоге от данной реализации и начил отталкиваться от того, чтобы временно создавать текстовый файл со списком нужных нам исходных файлов: Код:
dir /b "%prefix%*" > tmp.txt |
1. Изменять переменные в цикле нужно используя "!" а не "%" - иначе у Вас значение так и не поменяется (внутри цикла). При этом в начале скрипта должна быть объявлена строка SetLocal EnableDelayedExpansion
2. очепятка в цикле - вместо "to" надо "in" 3. добавте в цикл еще одну переменню (так менее красиво, но чуточку быстрее): set n=00!id! set n=!n:~-3! и в команде copy вместо %id% используйте !n! * неизменяемые переменные можно оставить в процентах |
Цитата:
Код:
set id=1000 |
NiOl, gora, очень хорошо получилось с 001, но вот в процессе работы цикла на 1 все это дело не увеличивается, т.е. при копировании получилось то, что один Filename_001 размножился на все файлы.
|
ArsenBespalov, да вроде все работает :dont-know
Код:
SetLocal EnableDelayedExpansion |
gora, окознал свою ошибку, спасибо за совет! Вернее даже за решение!
|
Тема хоть и старая но пришлась как нельзя к стати.
Только стоит дабавить расширения файлов в строку copy /y in_dir\%prefix%_!id:~-3!.txt to_dir\%%i.txt |
Ребята, объясните человечьим языком значение вот этого:
Цитата:
|
Человечьим языком объяснено здесь:
Код:
set /? |
Iska, спасибо человек!
|
Время: 01:33. |
Время: 01:33.
© OSzone.net 2001-