0

我正在尝试使用批处理脚本从机器上散列所有或大部分文件。我认为直截了当的当然不是因为 FCIV 不会扫描隐藏文件。我试图制作一个 for 循环来扫描各个文件本身,但在命令行中有效的在批处理文件中无效。

我会转到驱动器的根目录并尝试以下操作:

FCIV -r -both c:\

但是我注意到有很多文件丢失了(即使是管理员),其中大部分是隐藏文件。

谢谢,任何帮助将不胜感激。

4

1 回答 1

0

我将这段代码用于 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 等其他哈希程序。

于 2020-05-31T06:04:40.887 回答