У меня есть проект с вложенными папками.
Я хочу иметь возможность рекурсивно просматривать каталоги, пока не будет найден файл «build.bat», и выполнить его.
Как это сделать из командной строки? (т.е. не из самого пакетного файла).
Предыстория (необязательно): попытка использовать компилятор vim и настройки makeprg для запуска файла сборки, расположенного где-то в проекте, и перенаправления вывода в быстрые подсказки.
решение1
Предположим, что корневая папка конкретного проекта — это d:\Remote
и это ваш текущий рабочий каталог. Тогда (скопировано и вставлено из моего окна командной строки):
d:\Remote>for /F "delims=" %G in ('dir /b /s build.bat') do @echo "%~G"
"d:\Remote\bat\test\build.bat"
Тогда вы могли бы просто удалить @echo
...
Если вы находитесь в другом рабочем каталоге:
d:\bat>for /F "delims=" %G in ('dir /b /s "d:\Remote\build.bat"') do @echo "%~G"
"d:\Remote\bat\test\build.bat"
Примечаниеможет быть найдено более одного файла; если @echo
удалить, то все найденные пойдут на выполнение:
d:\Remote>for /F "delims=" %G in ('dir /b /s cdn.bat') do @echo "%~G"
"d:\Remote\bat\cdn.bat"
"d:\Remote\bat\test\cdn.bat"
Ресурсы(обязательно к прочтению):
- (справочник команд)Индекс AZ командной строки Windows CMD
- (дополнительные особенности)Синтаксис командной строки оболочки Windows CMD
- (
%~G
и т.д. специальная страница)Аргументы командной строки (параметры)