呼叫扩展失败的说明



我正在寻找一些技巧来解决调用扩展 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 仔细检查输出。该报告可能显示的是当前目录,而不是%target%(至少,它对我来说是这样......

修复:

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

相关内容

  • 没有找到相关文章

最新更新