获取for循环中找到的文件的路径

时间:2018-04-28 11:02:38

标签: windows batch-file for-loop

我想遍历一个文件夹及其子文件夹,获取所有.jpg个文件,并在我重命名当前找到的文件扩展名的文件上运行myapp.exemyapp.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 :(得分:1)

如果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)