所以我有这个代码输出文件的文件大小,然后替换文件并再次检查大小:
FOR %%A IN (%userprofile%\remove.me) DO (
set size=%%~zA
)
pause
echo before:%size%
copy %userprofile%\copy.me %userprofile%\remove.me
pause
FOR %%B IN (%userprofile%\remove.me) DO (
set size2=%%~zB
)
pause
echo after:%size2%
pause
exit
它工作得很好,但是当我在执行代码之前尝试检查remove.me文件是否存在时它不会输出文件大小:
if EXIST %userprofile%\remove.me (
FOR %%A IN (%userprofile%\remove.me) DO (
set size=%%~zA
)
pause
echo before:%size%
copy %userprofile%\copy.me %userprofile%\remove.me
pause
FOR %%B IN (%userprofile%\remove.me) DO (
set size2=%%~zB
)
pause
echo after:%size2%
pause
exit
)
只会说
之前:
后:
没有文件大小。 如果我试图逃避由if语句运行的代码中的括号,它将返回它(C:\ Users \ Myaccountname \ remove.me)不遵循语法。
我无法弄清楚为什么会这样,以及如何解决这个问题。不要评判我,我是新手.-。
答案 0 :(得分:0)
您正在更改并访问括号内的值。所以您需要delayed expansion
setlocal enableDelayedExpansion
if EXIST "%userprofile%\remove.me" (
FOR %%A IN ("%userprofile%\remove.me") DO (
set size=%%~zA
)
pause
echo before:!size!
copy "%userprofile%\copy.me" "%userprofile%\remove.me"
pause
FOR %%B IN ("%userprofile%\remove.me") DO (
set size2=%%~zB
)
pause
echo after:!size2!
pause
exit
)