2

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

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

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

Можно ли это автоматизировать с помощью bat-файла?

4 ответа4

1

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

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

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

0
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

Если вы хотите поэкспериментировать с альтернативными командными строками, TakeCommand (TCMD/TCC) от JPSoft имеет внутреннее устройство, чтобы делать это с тех пор, как я думаю, с 1980-х годов, еще тогда, когда это была NDOS.

Я мог бы сделать del /s * .bak, чтобы убить все файлы bak, но это сделает попытку в каждой папке и завершится неудачей, если нет файлов bak.

Введите глобальный.

глобальный, если существует * .bak del * .bak

Намного быстрее. Проходит через каждую папку и выдает только удаление, если существуют файлы bak.

Что касается личного администрирования, мне гораздо лучше с расширенной командной строкой JPSoft. И я использую его с 1980-х годов - я не думаю, что они никуда не денутся.

0

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

Просто напишите BAT-файл так:

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

Если у вас много каталогов и команды всегда одинаковы, поместите их во второй BAT-скрипт и используйте цикл for :

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .