呼叫扩展失败的解释

时间:2017-03-25 23:52:26

标签: batch-file substitution expand modifiers

我正在寻找一些解决扩展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工作正常。感谢任何可以提供帮助的人。我不想运行两个批处理文件。不应该是恕我直言。

1 个答案:

答案 0 :(得分:2)

我建议您使用%%~fB仔细检查输出。该报告可能显示当前目录,而不是%target%(至少,它对我有用...)

修正:

PUSHD %target%

for /F "delims=" %%B in (
  'dir /b "*.jpg"'
) do echo Size: %%~zB

POPD