我正在尝试使用批处理脚本从机器上散列所有或大部分文件。我认为直截了当的当然不是因为 FCIV 不会扫描隐藏文件。我试图制作一个 for 循环来扫描各个文件本身,但在命令行中有效的在批处理文件中无效。
我会转到驱动器的根目录并尝试以下操作:
FCIV -r -both c:\
但是我注意到有很多文件丢失了(即使是管理员),其中大部分是隐藏文件。
谢谢,任何帮助将不胜感激。
我将这段代码用于 CertUtil,它也可能适用于 FCIV
cd /d %targetDir%
for /r %%e in (*) do (
if exist "\\?\%%e" (
FOR /F "tokens=* USEBACKQ" %%F IN (`certutil -hashfile "\\?\%%e" %hashType% ^| findstr /v "certutil hash"`) DO (SET var=%%F)
echo !var! "%%e" >> %hashDatabaseOutput%
SET /A fileCount += 1
) else (
echo ERROR 1 - Failed to Hash file, File or Directory contains special characters >> %errorlog%
echo %%e >> %errorlog%
echo.>> %errorlog%
)
)
cd /d "%workingDir%"
我和你有类似的问题,我正在扫描 C:\ 中的一些文件,但那些不是隐藏文件。
编辑:似乎使用这种方法没有什么区别,因为即使将文件路径提供给 FCIV,散列也会失败,因为它找不到文件。您可以在这里查看我的问题https://stackoverflow.com/questions/62111957/fciv-fails-to-find-some-files-when-hashing-c-drive
EDIT2:找到了根本原因,它是由您尝试扫描 C:\Windows\System32 中的文件时重定向引起的。一个人在这里解释得很清楚 系统找不到指定的路径
由于 FCIV 只有 32 位模式,唯一的解决方案是使用 64 位的 rHash 等其他哈希程序。