Ошибка PathTooLongException при использовании Get-ChildItem

Я пытаюсь создать список всех известных файлов в общей папке с атрибутами Archive а также Offline,

Но я продолжаю сталкиваться с PathTooLongException ошибки.

До сих пор я обнаружил, что Robocopy может работать только после ошибок длины файла, за исключением того, что я не могу получить результаты такого же типа, "только эти атрибуты".

Пример:

Get-ChildItem -Attributes A+O -Recurse |Export-Csv E:\temp\StubSearchCorp.csv

дает:

Get-ChildItem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be 
less than 248 characters.
At line:1 char:1
+ Get-ChildItem -Attributes A+O -Recurse |Export-Csv E:\temp\StubSearchA.Corp.cs ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   + CategoryInfo          : ReadError: (F:\Corporate\...e A Train & Ship:String) [Get-ChildItem], PathTooLongException
   + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand

Кто-нибудь знает, как я могу экспортировать в CSV такой список?

2 ответа

Robocopy - это швейцарский армейский нож с множеством вариантов. Я думаю, что все другие инструменты будут страдать от слишком длинной ошибки пути. Вам действительно нужны все свойства, которые Get-ChildItem создает в CSV, или вас интересует только список полностью определенных имен файлов? Если последнее, попробуйте это:

ROBOCOPY source dest /IA:AO /FP /NP /S /L /LOG:myfiles.txt

/ L создает список без копирования данных.
/ FP содержит полный путь, а не только имя файла.
/ NP подавляет% сообщений о прогрессе в журнале
См. "Параметры выбора файла" из использования Robocopy:
/ IA: [RASHCNETO]:: Включить только файлы с любым из заданных атрибутов

В этом ответе SO было найдено решение на основе Powershell, в котором объясняется, как игнорировать эти ужасные вопросы. PathTooLongException рубки. Вот мое конкретное использование:

Get-ChildItem *.txt -Recurse -ErrorAction SilentlyContinue | Select-String "my pattern"

Для сценария ОП это составит:

Get-ChildItem -Attributes A+O -Recurse -ErrorAction SilentlyContinue | Export-Csv "rslt.csv"

Один существенный недостаток: он молча игнорирует все пути, которые на вкус Powershell считаются "слишком длинными" (как и обещает команда). Тем не менее, в моем собственном случае, я просто хотел подавить эти ошибки о node_modules папки. Другие могут приземлиться здесь с той же проблемой, поэтому я решил поделиться здесь...

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