Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скопировать название каталогов в файл с параметрами

Ответить
Настройки темы
CMD/BAT - [решено] Скопировать название каталогов в файл с параметрами

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

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

Отправлено: 14:00, 04-09-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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
…
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:26, 04-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:53, 04-09-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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».

Последний раз редактировалось Iska, 04-09-2013 в 18:44. Причина: «предикат» → «параметр»

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:39, 04-09-2013 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 07:34, 05-09-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скопировать название каталогов в файл с параметрами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Скопировать структуру каталогов с одного диска на другой. voler Скриптовые языки администрирования Windows 3 30-07-2013 20:45
как скопировать структуру каталогов с доступами? lexter-kn Microsoft Windows NT/2000/2003 13 19-05-2012 13:55
Ошибка - Не получается скопировать файл Teenko Microsoft Windows 2000/XP 6 16-02-2012 15:17
Любой язык - [решено] запись древа каталогов и файлов в файл UmbrellaMegaHack Скриптовые языки администрирования Windows 1 10-11-2010 16:10
CMD/BAT - пакетный файл для построения системы студенческих каталогов ololo18 Скриптовые языки администрирования Windows 1 21-04-2010 07:06




 
Переход