呼叫扩展失败的解释
explanation for call expansion failing
我正在寻找一些解决调用扩展 t、z 和 a 失败的技巧。
示例:
for /F "delims=" %%F in (
'dir /b "%source%\*." '
) do if not exist "%target%\%%~nF.jpg" copy "%source%\%%~F" "%target%\%%~nF.jpg"
for /F "delims=" %%B in (
'dir /b "%target%\*.jpg"'
) do echo Size: %%~fB
这个例子 运行 非常完美,但是当我将最后一行编辑为
%%~zB
我得到多行输出,只说大小:
另外,如果我 运行
for /F "delims=" %%B in (
'dir /b "%target%\*.jpg"'
) do echo Size: %%~zB
在一个批处理文件中,它 运行 符合预期,显示了实际文件大小。我对 %~a 和 %~t 进行了相同的尝试并得到了相同的结果;当 运行 与其他复制序列一起时无输出,当 运行 单独时正确输出。
不确定这里发生了什么,因为 %~f 工作正常。感谢任何可以提供帮助的人。我不想 运行 两个批处理文件。恕我直言,应该没有必要。
我建议您使用 %%~fB
仔细检查输出。报告可能显示的是 current 目录,而不是 %target%
(至少,它对我有用...)
修复:
PUSHD %target%
for /F "delims=" %%B in (
'dir /b "*.jpg"'
) do echo Size: %%~zB
POPD
我正在寻找一些解决调用扩展 t、z 和 a 失败的技巧。
示例:
for /F "delims=" %%F in (
'dir /b "%source%\*." '
) do if not exist "%target%\%%~nF.jpg" copy "%source%\%%~F" "%target%\%%~nF.jpg"
for /F "delims=" %%B in (
'dir /b "%target%\*.jpg"'
) do echo Size: %%~fB
这个例子 运行 非常完美,但是当我将最后一行编辑为
%%~zB
我得到多行输出,只说大小:
另外,如果我 运行
for /F "delims=" %%B in (
'dir /b "%target%\*.jpg"'
) do echo Size: %%~zB
在一个批处理文件中,它 运行 符合预期,显示了实际文件大小。我对 %~a 和 %~t 进行了相同的尝试并得到了相同的结果;当 运行 与其他复制序列一起时无输出,当 运行 单独时正确输出。
不确定这里发生了什么,因为 %~f 工作正常。感谢任何可以提供帮助的人。我不想 运行 两个批处理文件。恕我直言,应该没有必要。
我建议您使用 %%~fB
仔细检查输出。报告可能显示的是 current 目录,而不是 %target%
(至少,它对我有用...)
修复:
PUSHD %target%
for /F "delims=" %%B in (
'dir /b "*.jpg"'
) do echo Size: %%~zB
POPD