两个for循环批处理中的变量

时间:2017-08-12 17:31:46

标签: batch-file

以前有人用类似的东西帮我,但我仍然有问题。 我有一个错误,我不知道如何解决它。 我想要做的是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中的文件数相同。

但是在变量中只保存了最后一个大小

0 个答案:

没有答案
相关问题