1

У меня есть пакетный файл, который дает мне список каталогов всех файлов в текущей и подпапках. Я хотел бы изменить это, чтобы перечислить все файлы, которые находятся в подпапках, но НЕ в текущей папке. В настоящее время я использую эту команду ниже, которая успешно работает, чтобы вывести список всех файлов в текущей папке и подпапках.

cd "c:\temp"
dir  /s/b *.doc>c:\temp\mylist.txt

Это дает следующие результаты:

c:\temp\test8.doc
c:\temp\test9 (2).doc
c:\temp\test9.doc
c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc

Я хотел бы, чтобы мои результаты не показывали то, что находится непосредственно в c:\temp, поэтому мои желаемые результаты были бы:

c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc

1 ответ1

0

это должно работать

for /f "delims=" %5  in ('dir /a:d /b') do dir /b /s  "%5"

Вот поломка для этого лайнера.

for /f используется для зацикливания списка элементов.

"delims=" устанавливает разделители в none, поэтому каждая строка обрабатывается как одна фраза. По умолчанию пробелы будут рассматриваться как разделитель.

%5 - это переменная.

in ('dir /a:d /b') это получает список каталогов целевой папки.

do dir /b /s "%5" здесь вы определяете действие do за которым следует команда, а затем переменная %5 в качестве аргумента.

Обратите внимание, что при запуске из пакетного файла вы должны использовать %%5

for /f "delims=" %%5 in ('dir /a:d /b') do dir /b /s "%%5"

Надеюсь это поможет.

Спасибо

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