使用8.3短名称表示法

时间:2016-08-10 19:49:53

标签: powershell recursion scripting short-filenames

我有一个PS命令:

PowerShell.exe "dir -Verbose -Recurse | Select-Object Mode, Length, Name, Directory | Export-Csv "listing.csv""

这可以给我一个列出我想要的方式的目录,但有一点需要注意:如果目录结构或文件名最大化(我认为它的260个字符),它不会在生成的csv中列出此文件并且它会抛出一个错误。

有没有人有任何建议使其与8.3表示法兼容?我认为这是获取所有文件的唯一方法。

1 个答案:

答案 0 :(得分:0)

我已经处理了这一堆,但遗憾的是,8.3表示法在很多情况下仍然不起作用,因为文件名仍然可能超过260个字符。可以使用驱动器安装来缩短文件名,但这可能有点痛苦。我发现的最好方法是使用名为AlphaFS的.NET库来解决问题,该库没有260个字符限制,您可以阅读更多内容或下载它here。如果你之前没有直接使用过.NET类,那么需要习惯一点,但这比尝试奇怪的黑客或处理8.3表示法要好得多。加载程序集后,将dir -verbose -recurse替换为([Alphaleonis.Win32.Filesystem.Directory]::GetFiles((pwd).path,"*","AllDirectories"))。请注意,除了将GetFiles替换为GetDirectories

之外,对于使用相同代码的目录,只能获取文件