Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скопировать название каталогов в файл с параметрами (http://forum.oszone.net/showthread.php?t=267466)

aks.05 04-09-2013 14:00 2212590

Скопировать название каталогов в файл с параметрами
 
Добрый день!
На работе есть такая очень срочная задача:
Нужно скопировать имена всех хранящихся каталогов и (Внимание!) подкаталогов только первого уровня вложенности в текстовый файл, в котором можно было бы показать пробелом или табом имя каталога и подкаталогов. Имена папок могут быть с пробелами, на кириллице/латинице.

Пример:
"Папка1 содержит Подпапку1.1 и Подпапку1.2;
Папка2 содержит Подпапку2.1;
Папка3 не содержит вложенных подкаталогов;
и т.д."

В файле пример.txt должна быть запись вида:
"Папка1 Подпапка1.1 Подпапка1.2
Папка2 Подпапка2.1
Папка3
..."
Очень прошу, помогите пожалуйста создать Bat файл. Весь интернет перекопал, но ничего такого не нашел...

Iska 04-09-2013 15:26 2212644

Цитата:

Цитата aks.05
В файле пример.txt должна быть запись вида:
"Папка1 Подпапка1.1 Подпапка1.2
Папка2 Подпапка2.1
Папка3
..." »

Потрясающе. Особенно с учётом:
Цитата:

Цитата aks.05
Имена папок могут быть с пробелами… »


PowerShell:
Код:

$sRootPath  = "C:\Windows"
$sResultFile = "C:\Песочница\031\пример.txt"

([System.IO.FileInfo]$sRootPath).FullName | Out-File -FilePath $sResultFile

Get-ChildItem -Path $sRootPath -Force |`
    ForEach-Object -Process {
        if($_.PsIsContainer) {
            "`t$($_.Name)" | Out-File -FilePath $sResultFile -Append
           
            Get-ChildItem -Path $_.FullName -Force |`
                ForEach-Object -Process {
                    if($_.PsIsContainer) {
                        "`t`t$($_.Name)" | Out-File -FilePath $sResultFile -Append
                    }
                }
        }
    }

Результирующий «пример.txt»
Код:

C:\Windows
        $968930Uinstall_KB968930$
                spuninst
        $NtUninstallKB968930$
                ru
        addins
        AppPatch
        assembly
                GAC
                GAC_32


        Cursors
        Debug
                UserMode
        Downloaded Program Files
        Driver Cache
                i386
        ehome
        Fonts


aks.05 04-09-2013 15:53 2212658

Супер! Огромное Спасибо!
А можно сделать так чтобы родительские каталоги сортировались по их дате создания, от самого раннего до самого позднего?

Iska 04-09-2013 16:39 2212685

Цитата:

Цитата aks.05
от самого раннего до самого позднего? »

Теперь бы ещё на русский перевести. «Более ранний» — это старше возрастом? Или наоборот?

Чем старше — тем раньше:
Код:

$sRootPath  = "C:\Windows"
$sResultFile = "C:\Песочница\031\пример.txt"

([System.IO.FileInfo]$sRootPath).FullName | Out-File -FilePath $sResultFile

Get-ChildItem -Path $sRootPath -Force | Sort-Object -Property "CreationTime" |`
    ForEach-Object -Process {
        if($_.PsIsContainer) {
            "`t$($_.Name)" | Out-File -FilePath $sResultFile -Append
           
            Get-ChildItem -Path $_.FullName -Force | Sort-Object -Property "CreationTime" |`
                ForEach-Object -Process {
                    if($_.PsIsContainer) {
                        "`t`t$($_.Name)" | Out-File -FilePath $sResultFile -Append
                    }
                }
        }
    }

Если надо наоборот — добавьте параметр «-Descending» в оба командлета «Sort-Object».

aks.05 05-09-2013 07:34 2212978

Все понятно! Большое спасибо!


Время: 13:12.

Время: 13:12.
© OSzone.net 2001-