我试图将哈希函数应用于文件夹中的所有文件作为某种版本控制。我们的想法是创建一个测试文件,列出文件名和生成的校验和。在线挖掘我发现了一些应该做的技巧(理论上):
$list = Get-ChildItem 'C:\users\public\documents\folder' -Filter *.cab
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
foreach ($file in $list) {
$return = "" | Select Name, Hash
$returnname = $file.Name
$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.Name)))
$return = "$returnname,$returnhash"
Out-File -FilePath .\mylist.txt -Encoding Default -InputObject ($return) -Append
}
但是当我运行它时,我收到一个错误,因为它试图从c:\ users \ me \中读取文件,这是我运行脚本的文件夹。并且文件c:\ users \ me \ aa.cab不存在,因此无法访问。
我已经尝试了所有我能想到的东西,但没有运气。我使用Windows 7和Powershell 2.0,如果这有任何帮助。
答案 0 :(得分:2)
尝试使用.FullName而不仅仅是.Name。
$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))