Как указать путь к каталогу в .bat-файле?

Как указать путь к каталогу в .bat-файле?

У меня есть .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

Связанный контент