Windows 为什么在批处理参数替换中使用path运算符是无效的

Windows 为什么在批处理参数替换中使用path运算符是无效的,windows,batch-file,Windows,Batch File,我有一个批处理文件,它应该得到一个目录,并使用我的应用程序处理其中的所有jpeg文件 批处理文件是: for %%I in (%1\*.jpg) do ( bin\process.exe %%I "%~dpI\output\%~nxI" ) 但是,当我运行此批处理文件时,出现以下错误: 批处理参数中path运算符的以下用法 替换无效:%~dpI\output\%~nxI” 我读了格式说明符,它说: %~dpI - expands %I to a drive letter and p

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

批处理文件是:

for %%I in (%1\*.jpg) do (
bin\process.exe %%I "%~dpI\output\%~nxI"
)
但是,当我运行此批处理文件时,出现以下错误:

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

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

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
基于此,语法应该是正确的吗


问题是什么?

在批处理文件中,使用for循环变量时需要两个%symbol。像%I这样的变量只能用于命令行。您应该说

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