我想遍历一个文件夹及其子文件夹,获取所有.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"
答案 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)