如何在 Windows 批处理脚本中依次运行多个 shell 命令?

如何在 Windows 批处理脚本中依次运行多个 shell 命令?

我尝试使用'&'大多数类似帖子所建议的方法,但是没有效果:

@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

我基本上有两个 shell 脚本,它们允许我远程运行 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 命令行 shell 不是 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

相关内容