Тема: CMD/BAT: Исключить из вывода DIR C:\ /S /B содержимое папок
Как в команде
DIR C:\ /S /B
исключить вывод папок Windows и Program Files?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как в команде
DIR C:\ /S /B
исключить вывод папок Windows и Program Files?
А если установить для них атрибут "скрытый"?
Как-то так
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\>"
В принципе, задав для %windir% и %programfiles% самый редкий атрибут - (+H), а затем отфильтровать по этому самому атрибуту через:
DIR C: /A:-h /B /S
Тогда будут все остальные скрытые папки и файлы игнорироваться, чего нет в условии.
Да и зачем лишние движения с атрибутами?
Тогда будут все остальные скрытые папки и файлы игнорироваться, чего нет в условии.
Ну, да. Но с FIND тоже... зачем отсеивать значительную (возможно, в разы превосходящую оставшееся) часть вывода DIR и тратить время на её рекурсивный обход.
Наверно, самое правильное: сначала вывести список файлов из корневого каталога, а затем в цикле по-отдельности обработать каждую паку из корневого каталога, проверяя перед этим её имя.
Возможно, будет чем-то полезно: CMD/BAT: Как игнорировать файлы при удалении?
Тогда будут все остальные скрытые папки и файлы игнорироваться, чего нет в условии.
В коде ТС и так не выводятся скрытые и системные файлы. Чтобы они выводились, нужен ключ "/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\\."
.
В коде ТС и так не выводятся скрытые и системные файлы.
Точно, я и забыл.
и тогда код будет выглядеть так:
Я же выше дал более короткий вариант.
DIR C:\ /S /B|FINDSTR /I /V /R /C:"^C\\:\\Windows\>" /C:"^C\\:\\Program Files\>"
Я же выше дал более короткий вариант.
Ваш вариант не исключит из вывода ни одной папки, поскольку папок, подпадающих под эти регулярные выражения, просто не может существовать.
Yury, а попробовать сперва не судьба?
Запустите, к примеру, команду:
dir/b/s %windir%\system32\GroupPolicy|findstr/i/v/r /c:":\\Windows\\system32\\GroupPolicy\\User\>"
Папка User со всем её содержимым отобразится? Что-то сомневаюсь.
Yury, а попробовать сперва не судьба?
Да я-то попробовал... Только не этот код, а приведённый Вами выше и процитированный мной. Поэтому повторяю: код не исключает из вывода команды "DIR C:\ /B /S" ни одной папки. Вам нужно его исправить.
А чем этот принципиально отличается от того? Что и где там нужно править?
Что и где там нужно править?
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\>"
Согласны?
Ааа... Описался, так и нужно было на \\ до : указать. Сейчас исправлю.
P.S.: UNDYING ошибочно думал, что двоеточие и пробел нужно Escape-ить. А я без задней мысли подумал, что это обычная косая черта...
Теперь можно и сказать о недостатке такого варианта: кроме папок "C:\Windows" и "C:\Program Files" с их содержимым из вывода будут исключены папка "C:\Program Files (x86)" со всем содержимым и любые другие пользовательские файлы и папки (с их содержимым), находящиеся в корне диска "C", чьи имена начинаются на "windows " и "program files ", например, "Windows (мои настройки).pdf" или "Program Files (Portable)" (да мало ли что ещё может придумать пользователь).
Странно. Почему у меня работало. о_0
Ааа... Описался, так и нужно было на \\ до : указать. Сейчас исправлю.
P.S.: UNDYING ошибочно думал, что двоеточие и пробел нужно Escape-ить. А я без задней мысли подумал, что это обычная косая черта...
Собственно, я "на коленке" набросал и попробовал - работало.
Теперь можно и сказать о недостатке такого варианта: кроме папок "C:\Windows" и "C:\Program Files" с их содержимым из вывода будут исключены папка "C:\Program Files (x86)" со всем содержимым и любые другие пользовательские файлы и папки (с их содержимым), находящиеся в корне диска "C", чьи имена начинаются на "windows " и "program files ", например, "Windows (мои настройки).pdf" или "Program Files (Portable)" (да мало ли что ещё может придумать пользователь).
Да, вы правы.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться