0

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

4

1 回答 1

2

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

使固定:

PUSHD %target%

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

POPD
于 2017-03-26T00:08:32.333 回答