У меня есть .bat-файл рядом с папкой (Result).
В папке находятся .jpg-файлы с разными именами.
Я пытаюсь написать .bat-файл, чтобы он переименовал все эти файлы в этой папке.
Это работает, но не полностью. Вот в чем проблема:
Это работает только в той директории, в которой находятся файлы.
(Мне нужен файл .bat и папка с файлами рядом с ним. Чтобы это сработало).
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
решение1
Вот решение..
Вы можете просто перейти в папку, написав путьcd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
SetLocal EnableDelayedExpansionРазложение переменных через знаки (!)
кд / д Результатперейти в папку «Результат»
установить "количество = 1000"переменная, в которой я отметил количество нулейфайл-001.jpg
установить a = "*. jpg"переменная указывает, какие файлы мы ищем.
( dir /b /o:-d /tc %a%
)
реж- Отображает список файлов и подкаталогов. Далее сортируем.
/б- Отображать только имена файлов.
/о:-д- Сортирует список отображаемых файлов в обратном порядке (от новых к старым).
/тс- Сортировать по времени создания файла.
%а%- Вызовите переменную.
использованиеbackqУстанавливает возможность использования кавычек для имен файловНравится> ".
Указывает выполнение строки, заключенной в обратные кавычки, как командыНравится> `,
а строки в одинарных кавычках подобны командам в строке символовНравится> '.
разделители = xxxЗадает набор разделителей. Переопределяет набор разделителей пробел-табуляция по умолчанию.
решение2
Ваш вопрос мне не очень понятен (мой английский слабый и плохой), я не понимаю, что это будет:
Это работает только в той директории, в которой находятся файлы.
(Мне нужен файл .bat и папка с файлами рядом с ним. Чтобы это сработало).
- Полагаю, вы хотите переименовать рекурсивно, вот правка для этого.
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.Введите папку, в которой находится bat:
cd /d "%~dp0Result"
2.Рекурсивно перечислите свои файлыdir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.Увеличьте своего бухгалтера
set /a "_cnt+=1"
4.Переименуйте файл в цикле, используя счетчик
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
Наблюд.Если я далек от того, что вы ищете, пожалуйста, дайте мне знать...
- Альтернатива на основе вашего ответа
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF