2016-07-27 6 views
0

У меня есть частая задача пакетного переименования изображений в папке, так что имя состоит из не менее двух цифр, например. 01.jpg, 02.jpg, 03.jpg ... 140.jpg.Перечислить jpg-изображения в папке с ведущими нулями

Я хочу достичь этого, используя командный файл.
Я нашел код, но он переименовывает только первые 8 изображений.

@echo off 
set i=1 

for %%f in (*.jpg) do call :renameit "%%f" 
goto done 

:renameit 
IF 1%i% LSS 1000 SET i=0%i% 

ren %1 %i%.jpg 
set /A i+=1 

:done 
+1

У вас есть решение для DOS? Или вы собираетесь запустить его с помощью командной строки Windows ('cmd.exe')? – Melebius

+0

Мне нужно решение пакетного файла –

+0

на самом деле любой скрипт, выполнивший задание, которое может выполняться в окнах –

ответ

0
@echo off 
set i=1 

for %%f in (*.jpg) do call :renameit "%%f" 
goto :eof 

:renameit 
if 1%i% lss 100 (ECHO ren %1 0%i%.jpg) else (ECHO ren %1 %i%.jpg) 
set /A i+=1 
goto :eof 

сделал переименование непосредственно, без временной переменной. Удалите ECHO, если выход в порядке.

+0

нет его нет. На самом деле он даже не меняет числа. –

+0

Благодарю вас за помощь. Я достиг решения путем слияния двух ваших решений. –

+0

Я размещаю его здесь для других, но ответ принадлежит вам –

0

Этот ответ является объединением ответов вывешенные Stephan

@echo off 
 
set i=1 
 

 
for %%f in (*.jpg) do call :renameit "%%f" 
 
goto done 
 

 
:renameit 
 
IF 1%i% LSS 100 (SET new=0%i%) else (SET new=%i%) 
 
ren %1 %new%.jpg 
 
set /A i+=1 
 

 
:done

1

Эта задача может быть сделано с помощью одной командной строки в пакетном файле, если есть определенно никогда 1.jpg и 01.jpg в в каталоге, и в каталоге с *.jpg файлов нет a.jpg, b.jpg и т. д.

@for %%I in (?.jpg) do @ren %%I 0%%I 

Чтобы сделать пакетный файл более полезным, как добавить его в Послать папки и использовать его с помощью контекстного меню (правая кнопка мыши) на 1 или более выбранных каталогах, содержащих файлы изображений JPEG, он может быть продлен до поддерживайте опцию один или несколько путей папок в качестве параметра.

@echo off 
set "Folder=%CD%" 
:NextFolder 
if not "%~1" == "" set "Folder=%~f1" 
if "%Folder:~-1%" == "\" set "Folder=%Folder:~0,-1%" 
for %%I in ("%Folder%\?.jpg") do ren "%%~fI" "0%%~nxI" 
shift 
if not "%~1" == "" goto NextFolder 
set "Folder=" 

Это пакетные файлы переименовывает * .jpg файлы с одного символа в качестве имени файла по умолчанию только в текущем каталоге. Но если командный файл вызывается с 1 или более папками (не проверяется), пакетный файл переименовывает файлы ?.jpg во все указанные папки.

Пути папок, переданные в пакетный файл, могут быть относительными или абсолютными путями с обратным слэшем или без них.

Чтобы понять используемые команды и как они работают, откройте окно командной строки, выполните там следующие команды и тщательно прочитайте все страницы справки, отображаемые для каждой команды.

  • echo /?
  • for /?
  • goto /?
  • if /?
  • ren /?
  • set /?
  • shift /?

Обратите внимание: командный файл не является 100% отказоустойчивым, так как он не проверяет пути к папкам или найденные файлы * .jpg с единственным символом в качестве имени файла и не проверяет файл, уже существующий с новым имя файла. Однако сообщения об ошибках печатаются, если возникает ошибка, так как файл с новым именем уже существует.