获取文件夹及其子文件夹中最长文件路径的长度

Posted

技术标签:

【中文标题】获取文件夹及其子文件夹中最长文件路径的长度【英文标题】: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 个字符

【问题讨论】:

【参考方案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 *** 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 的后一个错误值。

以上是关于获取文件夹及其子文件夹中最长文件路径的长度的主要内容,如果未能解决你的问题,请参考以下文章

gulp的路径问题,路径通配符 ** * ,拷贝所有文件夹及其子文件夹下的文件

复制某文件夹及其子文件夹中的一定大小的文件

自学Python:查看文件夹及子目录所有文件路径

Python将某文件夹及其子文件夹下某种格式的文件移动到另一个指定的文件下

android 各个存储路径及获取方法总结

java 根据文件获取文件名及路径的方法