У меня есть два действия, которые я пытаюсь запустить, используя простой файл .bat. Первый раз, когда файл запускается, он продолжает выполнение команды, второй раз, когда он выполняет другую ... промыть и повторить.

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

2 ответа2

0

Если я правильно прочитал вопрос, вы хотите, чтобы командный файл запустил executetableA.exe, а затем завершил работу. В следующий раз, когда он запустится, вы захотите запустить исполняемый файл.exe и завершить работу. Затем при следующем запуске вы захотите снова запустить executeableA.exe.

Простой способ - создать файл маркера, например так:

@echo off
REM change the current working directory to where the batch script is located
cd /d %~dp0

if exist %~dp0Anext.txt (
  call :A
  goto :EOF
)
if exist %~dp0Bnext.txt (
  call :B
  goto :EOF
)
if not exist %~dp0*next.txt (
  call :firstrun
  goto :EOF
)
goto :EOF

REM subroutines only below this point:
:A
REM you would launch executableA.exe here
echo AAA
echo B > Bnext.txt
del Anext.txt
goto :EOF

:B
REM you would launch executableB.exe here
echo BBB
echo A > Anext.txt
del Bnext.txt
goto :EOF

:firstrun
REM you would launch executableA.exe here
echo AAA
echo B > Bnext.txt
goto :EOF

Если вы хотите расширить это, вы можете сделать так, чтобы он вращался между тремя или более исполняемыми сценариями / сценариями, следуя той же логике.

0

Есть. Используя этот пост о переполнении стека в качестве примера, я получаю:

(Создайте файл с именем first_run)

copy con first_run
42
^z

(Создайте пакетный файл, который проверяет, присутствует ли first_run)

Copy con mycommand.bat
Welcome to my_command.bat
pause  

IF EXIST D:\first_run
start /wait first_command

echo Your first command has been executed. Terminating now.
goto :EOF

echo first_run marker not found. 
echo starting the second command.
start second_command
^Z

Конец Goto ужасен. Я уверен, что должен быть более чистый путь. Но прошло много времени с тех пор, как я использовал командные файлы.

Изменено на goto :EOF . Спасибо Каран, хороший совет.

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