Windows 배치 스크립트에서 여러 셸 명령을 차례로 실행하는 방법은 무엇입니까?

Windows 배치 스크립트에서 여러 셸 명령을 차례로 실행하는 방법은 무엇입니까?

대부분의 유사한 게시물에서 제안한 대로 사용해 보았지만 '&'작동하지 않습니다.

@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

기본적으로 jupyter 노트북을 원격으로 실행하고 연결할 수 있는 두 개의 셸 스크립트가 있습니다. 수동으로 하나씩 실행하고 단일 스크립트로 결합하고 싶습니다.

첫 번째는 원격 서버에서 jupyter 노트북을 실행합니다.

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

두 번째는 포트 전달을 제공합니다.

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

이 둘을 어떻게 결합할 수 있나요?

답변1

Windows 명령줄 셸은 Bash가 아닙니다. Cmd.exe(때때로 "배치"라고도 함)입니다.

두 명령을 모두 실행하려면동시에, 그러면 실제로 Bash에 있지만 &Cmd에는 "배경" 효과가 없습니다. 이는 두 명령을 별도의 줄에 차례로 입력하는 것과 똑같은 작업을 수행합니다.

start무언가를 병렬로 실행하려면 여기에서도 사용할 수 있습니다 .

@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

ssh연결과 관련하여 왜 하나로 결합할 수 없는지 모르겠습니다(예: 를 사용하는 대신 실제 명령을 호출하고 동시에 전달을 설정하는 것 -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

관련 정보