как сделать скрипт выполнения командного файла в папках и подпапках? - PullRequest
0 голосов
/ 09 января 2019

Я создаю командный файл, который конвертирует файлы (jpg, png, gif) и выводит новый файл в какую-то папку, где я его нахожу. Я прошу пользователя указать путь к файлам, поэтому сценарию требуются сканирование каталогов и подкаталогов и выполнение сценария, но когда сценарий входит в другую папку, сценарий перестает работать ...

Вот мой командный файл:

set /p folderScan=Enter folder path:

cd %folderScan%

call :searchInFolder
goto :eof

:searchInFolder
for %%f in (*.png *.jpg *.gif) do (
    "%~dp0\myconverter.exe" "%CD%\%%f" -o "%CD%\%%~nf.newextension"
)

for /D %folderScan% in (*) do (
    cd %%d
    :searchInFolder
)

pause

Когда сценарий вводится в для / D ... и находит папку и обращается к ней, файлы, находящиеся внутри этой папки, не обрабатываются сценарием ...

Мне нужно отсканировать все папки и подпапки, когда я закончу обработку файлов в одной папке, мне нужно перейти к следующей папке, и если в папке есть папки внутри, к папке, к которой был получен доступ, скрипт должен получить доступ и обработайте файлы так:

|D:\Desktop\Images
|_Car
|__Red
|__Blue
|___Dark Blue
|_Bike
|_Animals
|__Dog
|__Cat
|_Games
|__Race
|___Bike
|___Cars

1 Ответ

0 голосов
/ 09 января 2019

Вам не нужны два разных цикла for (один для папок, другой для файлов). for /R может обрабатывать файлы рекурсивно:

for /R "%folderScan%" %%f in (*.png *.jpg *.gif) do ( 
  "%~dp0\myconverter.exe" "%%~ff" -o "%%~dpnf.newextension"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...