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

Windows 获取for循环中找到的文件的路径,windows,batch-file,for-loop,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 "delim

我想循环浏览文件夹及其子文件夹,获取所有
.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"
for/f“delims=“%%i in('dir/a-d/b/s*.jpg')do myapp.exe“%%i”“.gif”

如果
myapp.exe
实际转换文件而不是简单地更改扩展名,则可以使用元变量扩展(请参见
以获取/?
示例):

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

如果仅更换扩展名,则只需使用
重命名
命令:

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

在这两种情况下,您也可以将for循环更改为:

(*.jpg)中/R%%A的

您正在寻找
“%%~dpni.gif”
?为什么要使用
myapp.exe
,您不能只使用
Rename
命令吗
Do Ren“%%i”“%~ni.gif”
。的可能重复项