Batch file 批处理文件-循环中的空变量值
我正在编写一个批处理文件,它遍历整个目录(包括所有子目录),并将找到的每个文件的校验和打印到checksum.txt文本文件中 我用粗体表示的两个ECHO语句似乎都返回变量count和var的空值。最终这意味着创建的checksum.txt文件是空的。Batch file 批处理文件-循环中的空变量值,batch-file,variables,Batch File,Variables,我正在编写一个批处理文件,它遍历整个目录(包括所有子目录),并将找到的每个文件的校验和打印到checksum.txt文本文件中 我用粗体表示的两个ECHO语句似乎都返回变量count和var的空值。最终这意味着创建的checksum.txt文件是空的。 谢谢Stephan、HackingAddict1337和Squashman 我现在已经使用下面的代码使它工作了 setlocal ENABLEDELAYEDEXPANSION For /R "C:\Users\MyName\Desktop\So
谢谢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
您似乎知道,所以为什么不使用它呢?
SET/A count=!伯爵+1
-->设置/a“count+=1”我建议使用>>CHECKSUM.TXT(for…do(for…do(…))
,因为它只打开文件一次。在您的代码中,文件在每次迭代中打开和关闭。这将加快执行速度,特别是当有许多文件需要解析时。
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