Wie führe ich mehrere Shell-Befehle nacheinander in einem Windows-Batch-Skript aus?

Wie führe ich mehrere Shell-Befehle nacheinander in einem Windows-Batch-Skript aus?

Ich habe versucht, es so zu machen '&', wie es in den meisten ähnlichen Beiträgen vorgeschlagen wird, aber das funktioniert nicht:

@echo off
call variables.bat // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%" & 
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server &
start chrome %notebook_address% 
@PAUSE

Ich habe im Grunde zwei Shell-Skripte, mit denen ich Jupyter Notebook remote ausführen und eine Verbindung herstellen kann. Ich führe sie manuell nacheinander aus und möchte sie in einem einzigen Skript kombinieren.

Das erste führt ein Jupyter-Notebook auf einem Remote-Server aus:

@echo off 
call variables.bat  // contains port numbers and notebook address
ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%" 
@PAUSE

Die zweite Möglichkeit bietet die Portweiterleitung:

@echo off
call variables.bat
ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
@PAUSE

Wie könnte ich beides kombinieren?

Antwort1

Die Windows-Befehlszeilen-Shell ist nicht Bash, sondern Cmd.exe, manchmal auch „Batch“ genannt.

Wenn Sie beide Befehle ausführen möchtengleichzeitig, dann wäre dies &in Bash tatsächlich der Fall, aber in Cmd hat dies nicht den „Hintergrund“-Effekt; es bewirkt lediglich genau dasselbe, als würden Sie die beiden Befehle einfach nacheinander in separate Zeilen einfügen.

Um etwas parallel auszuführen, können Sie höchstwahrscheinlich startauch Folgendes verwenden:

@echo off
call variables.bat
start ssh user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start ssh -N -f -L localhost:%port_l%:localhost:%port_r% user@remote_server
start chrome %notebook_address% 
pause

Allerdings sehe ich bei den beiden sshVerbindungen keinen Grund, warum man sie nicht zu einer einzigen kombinieren könnte (also einfach den eigentlichen Befehl aufrufen und gleichzeitig die Weiterleitung einrichten, statt zu verwenden -N):

@echo off
call variables.bat
start ssh -f -L localhost:%port_l%:localhost:%port_r% user@remote_server "jupyter notebook --no-browser --port=%port_r%"
start chrome %notebook_address% 
pause

verwandte Informationen