首页 > 解决方案 > 批处理文件 - 循环中的空变量值

问题描述

我正在编写一个批处理文件,该文件遍历整个目录(包括所有子目录)并将找到的每个文件的校验和打印到 checksum.txt 文本文件中。

似乎我用粗体表示的两个 ECHO 语句都返回了变量 count 和 var 的空值。最终这意味着生成的 checksum.txt 文件是空的。

setlocal ENABLEDELAYEDEXPANSION

For /R "C:\Users\MyName\Desktop\SourceDir" %%G in (*) do (
SET /A count=1
    FOR /F "tokens=* USEBACKQ" %%F IN (`certutil -hashfile "%%G" sha256`) DO (
            SET var!count!=%%F
            SET /A count=!count!+1

echo ****************************************** %count% %var1%
        )
echo ****************************************** %var1%
SET FILECHECKSUM=%var1% %var2%

>>"CHECKSUM.TXT" echo(%FILECHECKSUM%

)

timeout /t -1

标签: batch-filevariables

解决方案


谢谢 Stephan、HackingAddict1337 和 Squashman。

我现在已经设法使用下面的代码让它工作了。

setlocal ENABLEDELAYEDEXPANSION

For /R "C:\Users\MyName\Desktop\SourceDir" %%G in (*) do (
SET /A count=1
    FOR /F "tokens=* USEBACKQ" %%F IN (`certutil -hashfile "%%G" sha256`) DO (
            SET var!count!=%%F
            SET /a count=!count!+1
echo xxxxxxxxxxxxxxx !count! !var1!
        )

SET FILECHECKSUM=!var1! , !var2!

>>"CHECKSUM.csv" echo(!FILECHECKSUM!

)


timeout /t -1

推荐阅读