Получить путь к найденному файлу в цикле for - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу перебрать папку и ее подпапки, получить все .jpg файлы и запустить myapp.exe для файлов, в которых я переименую расширение найденного в данный момент файла. myapp.exe принимает полный путь к файлу в качестве входных данных и переименованный файл в качестве выходных данных, например:

myapp.exe C:\images\original\210_551_210-768--RJF3823klzw.jpg -o C:\images\original\210_551_210-768--RJF3823klzw.gif

Теперь у меня есть это для рекурсивной печати полного пути *.jpg файлов.

for /f "delims=" %%i in ('dir /a-d/b/s *.jpg') do echo "%%i" "%%~ni.gif"

Однако, это печатает только имя файла для второго параметра, тогда как я хочу включить путь к найденному файлу.

Как включить путь к выходному файлу, второй параметр для myapp.exe?

псевдокод:

for /f "delims=" %%i in ('dir /a-d/b/s *.jpg') do myapp.exe "%%i" "<FULLPATH><FILNAME>.gif"

1 Ответ

0 голосов
/ 28 апреля 2018

Если myapp.exe на самом деле преобразует файл, а не просто меняет расширение, то вы можете использовать расширение с метавариями, (см. For /? для примеров) :

For /F "Delims=" %%A In ('Dir /B/S/A-D *.jpg') Do myapp.exe "%%A" "%%~dpnA.gif"

Если вы заменяете только расширение, вы можете просто использовать команду rename:

For /F "Delims=" %%A In ('Dir /B/S/A-D *.jpg') Do Ren "%%A" "%%~nA.gif"

В любом случае вы также можете изменить цикл for на:

For /R %%A In (*.jpg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...