操作系统是Windows 10。
我使用 PowerShell 的“Get-FileHash”命令直接在文件文件夹中生成文件的 MD5 校验和,如下所示:
PS Z:\Test> Get-FileHash 'test.txt' -algorithm MD5
Algorithm Hash Path
--------- ---- ----
MD5 D41D8CD98F00B204E9800998ECF8427E Z:\Test\test.txt
但是,当涉及长文件路径时,PowerShell 似乎无法通过 Get-FileHash 找到该文件。
PS Z:\Test loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong> Get-FileHash 'looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong.txt' -algorithm MD5 Resolve-Path : Cannot find path 'Z:\Test looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooong\looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooong.txt' because it does not exist.
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psm1:11
0 char:36
+ $pathsToProcess += Resolve-Path $Path | Foreach-Objec ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Z:\Test loooooo...ooooooooong.txt:String) [Resolve-Path], ItemNotFoundE
xception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.ResolvePathCommand
另一方面,它完全能够使用“Get-ChildItem”找到该文件:
PS Z:\Test loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong> Get-ChildItem
Directory: Z:\Test looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooong
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024-02-26 12:55 0 loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooong.txt
在这种情况下,我该如何生成 MD5:s?我没有管理权限。
答案1
\\?\
您可以通过在路径前面添加参数来指定扩展长度的路径-LiteralPath
,例如:
# local path
Get-FileHash -LiteralPath '\\?\C:\long\path\to\file.txt'
# network share
Get-FileHash -LiteralPath '\\?\UNC\server\share\folder\file.txt'
这使得大多数程序能够接受长路径名,并且不需要管理员权限。
请参阅此处的答案中的更多信息:https://stackoverflow.com/a/21194605/7411885