2015-03-11 2 views
1

Пожалуйста, несите меня, я noob для пакетных файлов.Пакетный файл для печати списка каталогов и файлов из определенной подпапки

Поэтому я использую D: \ RDSUsers в качестве основного каталога. Здесь около 150 папок (у каждого есть имя пользователя, например my is k.suria), и я хочу посмотреть в папку пользователя и выбрать папку «Support System», находящуюся в их папке рабочего стола. Звучит немного сложно.

Например моя папка пользователя находится в D: \ RDSUsers \ k.suria и я хочу, чтобы получить то, что когда-либо в моем D: \ RDSUsers \ k.suria \ Desktop \ System папку Support

Другими словами Я хочу перечислить имена папок в D: \ RDSUsers (150 из них) и перечислить все файлы, находящиеся в папке «Поддержка системы», которая находится в любой папке Desktop, но я хочу ее в одном текстовом файле.

Я кого-то смутил?

До сих пор у меня есть это:

для/d %% х в (D: \ RDSUsers \ *) У реж %% х \ Desktop \ "Системы поддержки"> %% x.txt

Это печатает 150 текстовых файлов для каждой папки из D: \ RDSUsers и перечисляет все, что находится в папке «Системы поддержки». Проблема в том, что я не хочу 150 текстовых файлов, я бы хотел только один. Как заставить его печатать только один текстовый файл?

Заранее благодарим за вашу помощь!

ответ

1

Вы так близко. Просто измените конец, так что вы не сделаете новое имя файла каждый раз, и добавить второй > так, что вывод добавляется к существующему файлу:

for /d %%x in (D:\RDSUsers\*) Do dir %%x\desktop\"Support Systems" >> OneBigFile.txt 

Edit: Хорошо, чтобы получить пользователь/имя папки, за которой следует список файлов на одной линии, это должно сделать трюк:

setlocal enabledelayedexpansion 
for /d %%x in (D:\RDSUsers\*) do (
    set line=%%~nx 
    for %%y in (%%x\desktop\"Support Systems"\*) do set line=!line! %%~nxy 
    echo !line! >> output.txt 
) 
+0

Да! Спасибо огромное! :) – kathy

+0

О, еще один вопрос, если вы не возражаете. Как мне изменить его, чтобы удалить все остальное и напечатать только имя папки пользователя и имена файлов поддержки Sytem? – kathy

+0

Есть несколько способов сделать это. Что-то вроде этого должно это сделать: 'for/d %% x in (D: \ RDSUsers \ *) Do @echo %% x && dir/b %% x \ desktop \" Системы поддержки ">> OneBigFile.txt' Значок at скрывает текст самой команды, echo %% x показывает имя папки, а dir/b показывает только имена файлов. Если это не то, что вы ищете, скажите мне точный формат, который вы хотите увидеть, и я посмотрю, сможем ли мы его сопоставить. – Kevin

 Смежные вопросы

  • Нет связанных вопросов^_^