Il file batch attiva le azioni


0

Ho due azioni che sto cercando di eseguire utilizzando un semplice file .bat. La prima volta che il file viene eseguito procede ad eseguire un comando, la seconda volta esegue un altro ... risciacquo e ripetizione.

Senza conoscere il funzionamento interno presumo che dovrà creare un file per dire in che stato è. Ecco dove finisce la mia conoscenza. Qual è un modo semplice per farlo?

Risposte:


0

C'è. utilizzando questo post su overflow dello stack come esempio ottengo:

(Crea un file chiamato first_run)

copy con first_run
42
^z

(Creare un file batch che controlla se è presente 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

Il goto end è brutto. Sono sicuro che ci deve essere un modo più pulito. Ma è passato molto tempo da quando ho usato i file batch.

Cambiato in goto :EOF. Grazie Karan, buon consiglio.


1
Se non ci sono subroutine (CALL), GOTO :EOF funzionerà.
Karan

0

Se leggo correttamente la domanda, il file batch deve essere eseguito eseguibileA.exe e quindi terminato. La prossima volta che viene eseguito, si desidera che esegua eseguibile.exe e termini. Quindi alla prossima esecuzione, si desidera eseguire nuovamente eseguibileA.exe.

Un modo semplice sarebbe quello di creare un file marker come questo:

@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

Se si desidera estendere questo, è possibile farlo ruotare tra tre o più eseguibili / script seguendo la stessa logica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.