【问题标题】:Get length of the longest file path in a folder and its sub folders获取文件夹及其子文件夹中最长文件路径的长度
【发布时间】:2017-06-03 05:37:53
【问题描述】:

我正在寻找可以从命令行 (batch \ PowerShell) 运行的脚本,该脚本将遍历文件夹及其子文件夹,并返回一个数字,该数字是最长文件路径的长度。

我已经看过一些批处理和 PowerShell 脚本,例如
How do I find files with a path length greater than 260 characters in Windows?
但它们都不能满足我的要求。

请注意,文件路径可能超过 256 个字符

【问题讨论】:

    标签: windows powershell batch-file


    【解决方案1】:

    PowerShell:

    ((Get-ChildItem -Recurse).FullName  | Measure-Object -Property Length -Maximum).Maximum
    

    命令行:

    powershell -exec Bypass -c "((dir -rec).FullName | measure Length -max).Maximum"
    

    编辑

    错误相关:Get-ChildItem : The specified path, file name, or both are too long:读取Maximum Path Length Limitation 和相关[PowerShell]-tagged StackOverflow threads

    PS D:\PShell> ((Get-ChildItem "D:\odds and ends" -Directory -Recurse).FullName  | Measure-Object -Property Length -Maximum).Maximum
    242
    
    PS D:\PShell> ((Get-ChildItem "D:\odds and ends" -Recurse -ErrorAction SilentlyContinue).FullName  | Measure-Object -Property Length -Maximum).Maximum
    242
    

    请注意,上述命令中的-ErrorAction SilentlyContinue 仅禁止显示错误消息。但是,我知道后面返回的242 值是错误的。

    我的工作方法应用cmd /C dir /B /S而不是(Get-ChildItem -Recurse).FullName,如下所示:

    PS D:\PShell> $x = (. cmd /C dir /B /S "D:\odds and ends")
    PS D:\PShell> $y = ( $x | Measure-Object -Property Length -Maximum).Maximum
    PS D:\PShell> $y
    273
    PS D:\PShell> $z = $x | Where-Object { $_.Length -gt 260 }
    PS D:\PShell> $z.GetTypeCode()
    String
    PS D:\PShell> $z
    D:\odds and ends\ZalohaGogen\WDElements\zalohaeva\zaloha_honza\Music\Jazz\!Kompilace\Saint Germain des Pres Cafe Vol. 1 to 8 - The Finest Electro Jazz Complication\Saint Germain Des Pres Cafe Vol. 7 - The Finest Electro Jazz Complication\CD 1\Configuring and Using Inte.txt
    PS D:\PShell>
    

    【讨论】:

    • 我收到此错误 Get-ChildItem : The specified path, file name, or both are too long.完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。但它在运行后工作:来自powershellmagazine.com/2012/07/24/…:Get-ChildItem –Force –Recurse –ErrorAction SilentlyContinue –ErrorVariable AccessDenied
    • @Epligam 为非常长的路径更新了答案。 PowerShellMagazine 的解决方案对我来说并没有改变242 的后一个错误值。
    猜你喜欢
    • 2010-12-02
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2015-01-25
    相关资源
    最近更新 更多