【发布时间】:2019-03-12 18:01:33
【问题描述】:
我正在尝试使用 .bat 文件打印给定目录中所有可执行文件的每个 SHA1 哈希值。我计划运行与 echo 不同的命令,但我无法让它删除空格。我希望它运行使用 SHA1 作为实际命令属性的给定命令,但我需要删除空格。该代码最初将可执行文件名称和 SHA1 写入 csv,但我试图去掉中间步骤。
For /f "delims=" %%A in (
'dir "%testfolder%\*.exe" /s /b /a-d'
) Do If %%~sA Gtr 0 For /f "delims=" %%B in (
'certutil -hashfile %%A SHA1 ^|findstr /i ^[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f]'
) Do (
REM I want to print the SHA1 number without the spaces
Echo %%B
)
我尝试创建第二个变量,以便最后一个 Do 看起来像这样:
Set var=%%B
Set var=%var: =%
Echo %%var
但这也没有得到想要的结果。有什么建议吗?
【问题讨论】:
-
用户@dbenham 在Dostips 上写了一个非常好的哈希脚本。
-
echo %%var错了,必须写成echo %var%;%%B是for循环的元变量,而%var%是环境变量。无论如何,当您尝试在循环内执行此操作时,它仍然不会返回您想要的 wnat,除非您使用 delayed expansion,所以它会是echo !var!然后...
标签: batch-file