2010-12-14 3 views
0

Я не могу найти ссылок, объясняющих, как пропустить через папку, переданную в качестве аргумента, и переименовать каждый файл. Все примеры, которые я видел, предполагают, что сценарий запущен в папке, где файлы будут переименованы или жестко заданы путь к папке в цикле. Как я могу это сделать? Вот пример того, что я пытаюсь сделать:Пакетный скрипт для переименования файлов в аргументе папки

for /f %%a in (%1) do call :RenameFiles 

:RenameFiles 
Rename %%a "new filename" 
Goto :EOF 
+0

Если ваша цель состоит в том, чтобы переименовать большое количество файлов в папке, используйте Rename Master http://www.joejoesoft.com/vcms/108/. –

ответ

1

Следующая добавляет префикс «renamed-» к каждому файлу в каталоге, указанном в качестве аргумента командной строки:

for %%F in (%~1\*) do ren "%%~F" "renamed-%%~nxF" 

EDIT Самое простое решение проблемы бесконечного цикла является работа в два этапа:

  1. подготовить перечень операций
  2. выполнить план.

-

set OpList=%TEMP%\%~n0%RANDOM%.bat 
copy nul "%OpList%" 
for %%F in (%~1\*) do echo ren "%%~F" "renamed-%%~nxF" >> "%OpList%" 
call "%OpList%" 
del "%OpList%" 
+0

Это хорошо работает, за исключением того, что я хочу переименовать файл, добавив папку перед ним. Ex:/Fall 2009/Notes.txt станет/Fall 2009/Fall 2009-Notes.txt Когда я использую: do ren "%% ~ F" "% ~ 1 - %% ~ nxF", он застревает в цикле, если имя папки в алфавитном порядке появляется перед другими файлами в папке. Пример: в папке с надписью «Налоговые формы» с двумя файлами под названием «Fall 2009.pdf» и «Winter 2008.pdf» осень 2009 года будет переименована в «Налоговые формы-осень-2009», затем «Налоговые формы-налоговые формы- Fall 2009 "и т. Д. В бесконечном цикле. Как это можно зафиксировать? – CoderJoe

Смежные вопросы