为什么我得到批处理参数替换中的路径运算符的以下用法无效

man*_*ans 8 windows batch-file

我有一个批处理文件,它应该获取一个目录并使用我拥有的应用程序处理其中的所有jpeg文件.

批处理文件是:

for %%I in (%1\*.jpg) do (
bin\process.exe %%I "%~dpI\output\%~nxI"
)
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个批处理文件时,我收到此错误:

批处理参数替换中路径运算符的以下用法无效:%~dpI\output \%~nxI"

我读了格式说明符,它说:

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
Run Code Online (Sandbox Code Playgroud)

基于它,语法应该是正确的吗?

问题是什么?

Som*_*ark 16

在批处理文件中,当您使用for循环变量时,需要两个%符号.像%I这样的变量只适用于命令行.你应该说

for %%I in (%1\*.jpg) do (
    bin\process.exe %%I "%%~dpI\output\%%~nxI"
)
Run Code Online (Sandbox Code Playgroud)