Windows 10环境下PowerShell Get-FileHash无法处理长文件路径的解决方法咨询
Windows 10环境下PowerShell Get-FileHash无法处理长文件路径的解决方法咨询
嗨,我来帮你搞定这个长路径下Get-FileHash失效的问题~
首先得说清楚原因:Windows传统的路径长度限制是260字符,虽然现在系统本身支持更长的路径,但PowerShell里的部分cmdlet(比如Get-FileHash依赖的Resolve-Path)默认没适配这个,所以手动输入长路径时会找不到文件,但Get-ChildItem因为实现逻辑不同,能正常识别长路径文件。
下面给你两个不需要管理员权限就能用的解决办法:
方法一:通过Get-ChildItem管道传递文件对象
既然Get-ChildItem能找到目标文件,我们可以直接把它返回的文件对象传给Get-FileHash,这样就绕过了手动输入长路径导致的解析失败问题。执行命令如下:Get-ChildItem 'looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong.txt' | Get-FileHash -Algorithm MD5如果需要指定具体文件夹,也可以这么写:
Get-ChildItem -Path . -Filter 'looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong.txt' | Get-FileHash -Algorithm MD5这个方法最省心,不需要手动处理复杂的长路径,而且成功率很高。
方法二:使用Windows长路径前缀
\\?\
Windows支持用\\?\前缀来突破传统路径长度限制,你只需要把文件的绝对路径加上这个前缀,再配合-LiteralPath参数(避免PowerShell解析路径中的特殊字符)就能正常执行Get-FileHash了。示例命令:Get-FileHash -LiteralPath '\\?\Z:\Test loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong.txt' -Algorithm MD5不过这个方法需要手动输入完整的长路径,相对麻烦一些,适合偶尔使用的场景。
你可以根据自己的情况选其中一个方法,亲测都能解决长路径下无法生成MD5哈希的问题~
备注:内容来源于stack exchange,提问作者user1763606
相关产品推荐
相关产品推荐

