Летучая мышь: Выполните команду в нескольких папках

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

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

> cd dir1
> command1 arg1 arg2
> command2 arg1 arg2
> cd ..
> cd dir2
> ...

Действительно ли это возможно автоматизировать с bat-файлом?

2
задан 03.04.2014, 12:00

3 ответа

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

pushd C:\projects
for /f "Delims=" %%i in ('dir /ad /b') do (
    cd "%%i"
    command1 arg1 arg2
    command2 arg1 arg2
    cd ..
)
popd

Не уверенный я добираюсь /f "Delims= часть, например, хотя... Я также хотел бы исключить некоторые каталоги. Прокомментируйте, знаете ли Вы как :)

1
ответ дан 12.12.2019, 00:16

Можно использовать все команды из командной строки в Bat-файле, таким образом, я не уверен, каков вопрос.

Просто запишите Bat-файл как это:

cd dir1
command1 arg1 arg2
command2 arg1 arg2
cd ..
cd dir2

Если у Вас есть много каталогов, и команды всегда являются тем же, помещают их во второй сценарий BAT и используют a for цикл:

for %%a IN ('dir /b %PROJECT_FOLDER%') do call second_script.bat %%a

Проверьте справку на dir если у Вас есть файлы и каталоги в %PROJECT_FOLDER%. Должна быть опция перечислить только каталоги.

0
ответ дан 12.12.2019, 00:16
pushd C:\projects
:: your 'for /f' was correct, but unnecessary
for /d %%i in (*) do call :foo "%%~i"
popd
goto :eof

:foo
    if "%~1"=="junk" goto :eof
    if "%~1"=="unneeded directory" goto :eof

    pushd "%~1"
    command1
    command2
    popd
    goto :eof

С другой стороны, если Вы только хотите включать несколько определенных каталогов:

for /d %%i in (a b c) do ...
0
ответ дан 12.12.2019, 00:16

Теги

Похожие вопросы