Как запустить несколько команд оболочки одну за другой в пакетном скрипте 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 notebook удаленно и подключаться к нему. Я запускаю их вручную один за другим и хочу объединить их в один скрипт.

Первый запускает jupyter notebook на удаленном сервере:

@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, иногда называемая «batch».

Если вы хотите выполнить обе командыодновременно, то это действительно было бы &в 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

Связанный контент