以前有人用类似的东西帮我,但我仍然有问题。 我有一个错误,我不知道如何解决它。 我想要做的是BATCH并比较变量的名称和它们的大小。
setlocal
FOR /F "Delims=" %%A in ('TYPE name.tmp') DO (
FOR /F "Tokens=5 Delims= " %%B in ('TYPE size.tmp') DO (
set "f|%%~nxA=%%~B"
)
)
CHCP 65001 >NUL
FOR /F "Delims=" %%A in ('DIR /B *.*^|Findstr /VE ".tmp"^|Findstr /VE ".ini"') DO (
if not defined f^|%%A (
echo %%A
) else (
setlocal Enabledelayedexpansion
echo.%%A "%%~zA" "!f|%%A!"
endlocal
)
)
代码的作用,在第一个目录中我有两个临时文件,一个文件大小,另一个文件大小分别名字,我做一个变量 f | filename = size 。 在第二个目录中,我必须看到哪些文件被称为相同,如果它们具有相同的名称,请参阅较大的文件。 一切正常,但使用!F | %% ~nxA!时,变量不会按我的意愿存储。
输出......
file2.txt "1948" "120"
file1.txt "120" "120"
它应该如何
file2.txt "1948" "1948"
file1.txt "120" "120"
当未定义变量时(这意味着在name.tmp中有一个名称与acutal目录中相同的文件),它会执行ECHO。
但是如果定义了文件(文件在name.tmp和目录中),我想查看acutal目录的大小以及size.tmp中的内容。 name.tmp和size.tmp中的文件数相同。
但是在变量中只保存了最后一个大小