【发布时间】:2016-03-31 07:25:43
【问题描述】:
我正在尝试在特定文件夹中构建一个逗号分隔的文件名列表。这些文件的名称往往很长(它们是测试用例结果,名称非常具有描述性)。
我发现 Get-ChildItem 会忽略名称(包括路径)过长的文件。
# Folder contains the following file (240 chars, actual name is 'only' 210 chars):
# SomeServiceWithAnAlreadyLongNameUnderTest_NameOfTheParticularTestSuiteThatProducedThisResult-NameOfTheActualMethodUnderTest-Given_A_Certain_Precondition_Is_Met_WhenCalling_With_Someparameter_As_SomeValue_Then_Result_Is_Something-Failed.txt
Get-ChildItem *.txt -name
# I would have loved for this to work:
(Get-ChildItem *.txt -name) -join ','
结果不包括文件,因为路径+文件名太长。也没有错误或警告。
作为一种解决方法,我正在使用带有 for: 的 cmd 脚本文件:
for %%a in (%XMLPath%\*.xml) do ( ... build comma separated list with %%a ... )
如何在 Powershell 中包含(太?)长名称的完整列表?
【问题讨论】:
-
尝试使用 [System.IO.Directory]::GetFiles() 获取路径集合并使用它。
-
还可以尝试在路径前加上 \\?\
-
PowerShell 是基于 .NET 构建的,不支持长文件路径。看一下这个。 stackoverflow.com/questions/12204186/…
-
如果您想构建自己的 .NET 程序集(添加类型到您的 PowerShell 脚本中),通过解决 Win32 系统调用来解决此限制,这可能会有所帮助:codeproject.com/Articles/19688/…
-
PowerShell v6.0.0-beta.3 现在默认支持 FYI UNC 路径:stackoverflow.com/a/47046785/1599699
标签: powershell