1

Задача: Показать основные папки в C:\temp, (отсортировано по верху / размеру), в папке c:\temp много подпапок, а также длинные пути.

лайк

c:\temp
c:\temp\folder1
c:\temp\folder1\sub_folder
c:\temp\folder2
c:\temp\folder2\sub_folder_more_folder_long_folders_files_names_as_well

Я хочу, чтобы отобразить список папок, как это

Name     Type        Size
folder1  Directory   10
folder2  Directory   12

Я использую следующий скрипт powershell, чтобы получить имя папки вместе с размером, отсортированным по размеру, и в итоге отобразить только 20 лучших папок.

ls c:\temp | select Name,
    @{
        Name="Type";Expression={
            if($_.psIsContainer)
            {
                "Directory"
            }
            else
            {
                "File"
            }
        }
    },
    @{
        Name="Size(GB)";
        Expression=
        {
            [Math]::Round($(ls $_.FullName -recurse| measure Length -sum).Sum/1GB, 3)
        }
    } | sort -property "Size(GB)" -desc | Select -First 20

Это дает мне результаты,

    USER1          Directory                       11.166
    USER2          Directory                       2.917
    USER3          Directory                       0.042

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.The specified path, file name, or both are too long. 

Как я вижу, это также дает ошибку длинных путей, как я могу преодолеть эту проблему?

1 ответ1

0

У вас, вероятно, не должно быть таких глубоких путей. Различные приложения будут или не смогут получить к ним доступ, и все сводится к реализации указанного приложения.

Тем не менее, вы можете посмотреть на этот вопрос, а более конкретно в \\? обозначения, как описано здесь, и проверяйте всякий раз, когда вы можете обойти ограничение, используя PS с этим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .