Я пытаюсь получить список путей всех подкаталогов (рекурсивно), которые имеют определенное имя, например. "bin"
. Проблема в том, что если текущий каталог содержит подкаталог этого имени, команда DIR будет выполняться только внутри этого подкаталога, игнорируя другие подкаталоги.Список всех подкаталогов с указанным именем
Пример:
C:\DEVELOPMENT\RESEARCH>ver
Microsoft Windows [Version 6.1.7601]
C:\DEVELOPMENT\RESEARCH>dir *bin* /ad /s /b
C:\DEVELOPMENT\RESEARCH\bin
C:\DEVELOPMENT\RESEARCH\Apache\2bin
C:\DEVELOPMENT\RESEARCH\Apache\bin
C:\DEVELOPMENT\RESEARCH\Apache\bin1
C:\DEVELOPMENT\RESEARCH\C#\ConsoleApps\MiscTests\bin
C:\DEVELOPMENT\RESEARCH>dir bin* /ad /s /b
C:\DEVELOPMENT\RESEARCH\bin
C:\DEVELOPMENT\RESEARCH\Apache\bin
C:\DEVELOPMENT\RESEARCH\Apache\bin1
C:\DEVELOPMENT\RESEARCH\C#\ConsoleApps\MiscTests\bin
C:\DEVELOPMENT\RESEARCH>dir bin /ad /s /b
C:\DEVELOPMENT\RESEARCH\bin\test
C:\DEVELOPMENT\RESEARCH>rmdir bin /s /q
C:\DEVELOPMENT\RESEARCH>dir bin /ad /s /b
C:\DEVELOPMENT\RESEARCH\Apache\bin
C:\DEVELOPMENT\RESEARCH\C#\ConsoleApps\MiscTests\bin
C:\DEVELOPMENT\RESEARCH>
dir *bin* /ad /s /b
выводит все подкаталоги, которые имеют bin
в их имени. И этот выход в порядке. То же самое с dir bin* /ad /s /b
, который выводит все подкаталоги, имя которых начинается с bin
. Но dir bin /ad /s /b
выводит только содержимое первого дочернего элемента текущего каталога с именем bin
. Требуемый выход:
C:\DEVELOPMENT\RESEARCH\bin
C:\DEVELOPMENT\RESEARCH\Apache\bin
C:\DEVELOPMENT\RESEARCH\C#\ConsoleApps\MiscTests\bin
Как я могу это достичь?
ПРИМЕЧАНИЕ. Если текущий каталог не содержит дочернего элемента bin
, выход будет таким, как ожидалось. (Я удалил bin
ребенка, чтобы показать это)
Вариант 1 делает работу. Я на самом деле пишу короткий скрипт, который удаляет подкаталоги с заданным именем. Я объединил ваш ответ (так его примет) с некоторыми другими командами и получил то, что хотел. Большое спасибо! –
вариант 1 - не работает в Vista с NUL. Сохраните \, но удалите NUL, и он работает в Vista. Также следует использовать кавычки. если существует "% A \" – dbenham
@dbenham Хорошая точка в кавычках. Я удивлен, что NUL не работает на Vista. Я тестировал на Win7 и Win2008, и это сработало, и статья (DOS Testing if drive ...) относится к Win 3.11, поэтому я ожидал, что она будет работать практически для всего. – Ryan