Рекурсивный список каталогов с 8.3 кратким обозначением

У меня есть команда PS:

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

Это дает мне список каталогов так, как я хочу, но есть одно предупреждение: если структура каталогов или имя файла исчерпаны (я думаю, что у него 260 символов), он не перечисляет этот файл в результирующем csv и выдает ошибку.

У кого-нибудь есть предложения по совместимости с нотацией 8.3? Я думаю, что это единственный способ получить все файлы.

1 ответ

Решение

Я имел дело с этим, 8.3 нотация, к сожалению, все еще не работает во многих случаях, так как имена файлов могут быть более 260 символов. Можно использовать монтирование диска, чтобы сократить имена файлов, но это может быть немного болезненно. Лучший способ, который я нашел, - это обойти проблему, используя библиотеку.NET с именем AlphaFS, которая не имеет ограничения в 260 символов, вы можете прочитать больше или скачать ее здесь. Придется немного привыкнуть, если вы раньше не работали напрямую с классами.NET, но это гораздо лучше, чем пытаться использовать странные хаки или работать с нотацией 8.3. Как только вы загрузите сборку, вы замените dir -verbose -recurse с ([Alphaleonis.Win32.Filesystem.Directory]::GetFiles((pwd).path,"*","AllDirectories")), Обратите внимание, что это будет получать только файлы, для каталогов вы используете тот же код, кроме замены GetFiles с GetDirectories

Другие вопросы по тегам