You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非开发人员求助:PowerShell获取指定文件属性遇路径过长问题

嗨,我来帮你搞定这个PowerShell的需求!针对你遇到的路径过长和输出格式不对的问题,咱们一步步来解决:

1. 先解决长路径问题

Windows默认限制路径长度为260字符,咱们可以通过\\?\前缀绕过这个限制——它会告诉Windows API直接处理完整路径,忽略长度限制。如果你用的是PowerShell 7及以上版本,原生就支持长路径,连这个前缀都不用加~

2. 生成你要的目标格式

你想要的输出是-a---- 9/9/2019 9:39AM folder1/folder2/Filename.txt,核心是要把Mode、格式化的最后修改时间、相对路径(斜杠分隔)拼接起来。直接用下面的脚本就能实现:

# 第一步:设置你要扫描的根文件夹路径
$rootFolder = "C:\Your\Target\Folder"

# 第二步:获取所有文件(包含长路径)
$allFiles = Get-ChildItem -Path "\\?\$rootFolder" -Recurse -Force -File

# 第三步:遍历文件,生成目标格式
$allFiles | ForEach-Object {
    # 计算相对路径,把反斜杠换成斜杠
    $relativePath = $_.FullName.Substring($rootFolder.Length + 1) -replace "\\", "/"
    # 格式化最后修改时间为你要的样式
    $formattedTime = $_.LastWriteTime.ToString("M/d/yyyy hh:mmtt")
    # 拼接成最终字符串
    "$($_.Mode) $formattedTime $relativePath"
} | Out-File -FilePath "FullFileName.txt" -Encoding UTF8

脚本细节解释

  • -File参数:只获取文件,如果需要包含文件夹,去掉这个参数或者改成-File -Directory
  • 相对路径计算:通过Substring去掉根文件夹的前缀,再用-replace把Windows的反斜杠换成你要的斜杠
  • 时间格式化:"M/d/yyyy hh:mmtt"会生成类似9/9/2019 09:39AM的格式,如果你想要带前导零的日期(比如09/09/2019),把M/d改成MM/dd就行

为什么之前的脚本没生效?

你之前的脚本要么没有处理相对路径(直接用了FullName绝对路径),要么没有统一格式化时间和拼接格式,而且没解决长路径的限制问题,所以才得不到想要的结果~

内容的提问来源于stack exchange,提问作者Tcoia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:29:24