1

Тема: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Как в команде

DIR C:\ /S /B

исключить вывод папок Windows и Program Files?

2

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

А если установить для них атрибут "скрытый"?

3

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Как-то так

DIR C:\ /S /B | FINDSTR /I /V /R /C:"^C\:\\Windows" /C:"^C\:\\Program\ Files"

4 (изменено: Flasher, 2015-08-05 03:44:34)

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

DIR C:\ /S /B|FINDSTR /I /V /R /C:"^C:\\Windows\>" /C:"^C:\\Program Files\>"

5

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

В принципе, задав для %windir% и %programfiles% самый редкий атрибут - (+H), а затем отфильтровать по этому самому атрибуту через:

DIR C: /A:-h /B /S

6

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

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

7

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:

Тогда будут все остальные скрытые папки и файлы игнорироваться, чего нет в условии.

Ну, да. Но с FIND тоже... зачем отсеивать значительную (возможно, в разы превосходящую оставшееся) часть вывода DIR и тратить время на её рекурсивный обход.
Наверно, самое правильное: сначала вывести список файлов из корневого каталога, а затем в цикле по-отдельности обработать каждую паку из корневого каталога, проверяя перед этим её имя.

Возможно, будет чем-то полезно: CMD/BAT: Как игнорировать файлы при удалении?

8

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:

Тогда будут все остальные скрытые папки и файлы игнорироваться, чего нет в условии.

В коде ТС и так не выводятся скрытые и системные файлы. Чтобы они выводились, нужен ключ "/A":

DIR C:\ /S /B /A

.


Eсли не нужен вывод только самих указанных папок, то код будет таким:

dir/b/s C:\| findstr/eilv /c::\Windows /c:":\Program Files"

.

Но, очевидно, ТС нужно исключить вывод как самих этих папок, так и их содержимого, и тогда код будет выглядеть так:

dir/b/s C:\| findstr/irv /c::\\Windows$ /c::\\Windows\\. /c:":\\Program Files$" /c:":\\Program Files\\."

.

9

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Yury пишет:

В коде ТС и так не выводятся скрытые и системные файлы.

Точно, я и забыл.

Yury пишет:

и тогда код будет выглядеть так:

Я же выше дал более короткий вариант.

10

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:
DIR C:\ /S /B|FINDSTR /I /V /R /C:"^C\\:\\Windows\>" /C:"^C\\:\\Program Files\>"
Flasher пишет:

Я же выше дал более короткий вариант.


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

11 (изменено: Flasher, 2015-08-05 02:47:15)

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Yury, а попробовать сперва не судьба?
Запустите, к примеру, команду:

dir/b/s %windir%\system32\GroupPolicy|findstr/i/v/r /c:":\\Windows\\system32\\GroupPolicy\\User\>"

Папка User со всем её содержимым отобразится? Что-то сомневаюсь.

12

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:

Yury, а попробовать сперва не судьба?


Да я-то попробовал... Только не этот код, а приведённый Вами выше и процитированный мной. Поэтому повторяю: код не исключает из вывода команды "DIR C:\ /B /S" ни одной папки. Вам нужно его исправить.

13

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

А чем этот принципиально отличается от того? Что и где там нужно править?

14

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:

Что и где там нужно править?

Flasher пишет:
DIR C:\ /S /B|FINDSTR /I /V /R /C:"^C\\:\\Windows\>" /C:"^C\\:\\Program Files\>"

DIR C:\ /S /B|FINDSTR /I /V /R /C:"^C:\\Windows\>" /C:"^C:\\Program Files\>"

Согласны?

15 (изменено: Flasher, 2015-08-05 03:48:27)

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Ааа... Описался, так и нужно было на \\ до : указать. Сейчас исправлю.

P.S.: UNDYING ошибочно думал, что двоеточие и пробел нужно Escape-ить. А я без задней мысли подумал, что это обычная косая черта...

16

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Теперь можно и сказать о недостатке такого варианта: кроме папок "C:\Windows" и "C:\Program Files" с их содержимым из вывода будут исключены папка "C:\Program Files (x86)" со всем содержимым и любые другие пользовательские файлы и папки (с их содержимым), находящиеся в корне диска "C", чьи имена начинаются на "windows " и "program files ", например, "Windows (мои настройки).pdf" или "Program Files (Portable)" (да мало ли что ещё может придумать пользователь).

17

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Странно. Почему у меня работало. о_0

18

Re: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок

Flasher пишет:

Ааа... Описался, так и нужно было на \\ до : указать. Сейчас исправлю.

P.S.: UNDYING ошибочно думал, что двоеточие и пробел нужно Escape-ить. А я без задней мысли подумал, что это обычная косая черта...

Собственно, я "на коленке" набросал и попробовал - работало.

Yury пишет:

Теперь можно и сказать о недостатке такого варианта: кроме папок "C:\Windows" и "C:\Program Files" с их содержимым из вывода будут исключены папка "C:\Program Files (x86)" со всем содержимым и любые другие пользовательские файлы и папки (с их содержимым), находящиеся в корне диска "C", чьи имена начинаются на "windows " и "program files ", например, "Windows (мои настройки).pdf" или "Program Files (Portable)" (да мало ли что ещё может придумать пользователь).

Да, вы правы.