【发布时间】:2020-01-04 10:27:12
【问题描述】:
我正在尝试使用批处理脚本从机器上散列所有或大部分文件。我认为直截了当的当然不是因为 FCIV 不会扫描隐藏文件。我尝试创建一个 for 循环来扫描各个文件本身,但在命令行中有效的在批处理文件中无效。
我会转到驱动器的根目录并尝试这样做:
FCIV -r -both c:\
但是我注意到很多文件丢失了(即使是管理员),其中大部分是隐藏文件。
谢谢, 任何帮助将不胜感激。
【问题讨论】:
我正在尝试使用批处理脚本从机器上散列所有或大部分文件。我认为直截了当的当然不是因为 FCIV 不会扫描隐藏文件。我尝试创建一个 for 循环来扫描各个文件本身,但在命令行中有效的在批处理文件中无效。
我会转到驱动器的根目录并尝试这样做:
FCIV -r -both c:\
但是我注意到很多文件丢失了(即使是管理员),其中大部分是隐藏文件。
谢谢, 任何帮助将不胜感激。
【问题讨论】:
我将这个 sn-p 代码用于 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 中的文件时重定向引起的。一个人在这里解释得很清楚 The system cannot find the path specified
由于 FCIV 只有 32bit 模式,唯一的解决方案是使用 64bit 的 rHash 等其他散列程序。
【讨论】: