jla*_*nza 8 windows batch-processing windows-subsystem-for-linux
我的主文件夹上有一些脚本,我想从命令行运行,实际上是从任务计划程序运行,但我找不到这样做的方法。
我努力了
wsl -u Ubuntu -u jlanza "cd /home/jlanza/bin && ./myscript && ./myotherscript"
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
如何在同一会话下串联执行多个命令?
Fre*_*k C 11
您需要转义 &&,以便 powershell 不会将它们视为不同的命令,要将 && 传递给 wsl,请执行以下操作:
wsl -d Ubuntu -u jlanza -- cd /home/jlanza/bin `&`& ./myscript `&`& ./myotherscript
小智 6
您需要将这些命令传递给 WSL(不带引号),以便 bash 将它们正确解释为一系列链接在一起的命令,而不是单个长命令。不幸的是,当您这样做时,“&&”运算符将由 Windows 命令行解释器进行解释,并且后面的命令不会传递到 WSL。
我发现有效的方法是将“&&”(仅当前面的命令成功退出时才运行命令)运算符替换为简单的“;” (无论前面的命令如何退出,都运行命令)。那么在你的情况下,这样的事情应该有效:
cmd /c "wsl -u Ubuntu -u jlanza cd /home/jlanza/bin; ./myscript; ./myotherscript"
Run Code Online (Sandbox Code Playgroud)
但是,如果您的用例需要使用“&&”运算符,我会尝试将您正在运行的命令保存为 WSL 中的脚本或 shell 别名。调用它将使您无需通过 Windows 命令行解释器传递“&&”。
C:\Windows\System32\wsl.exe -d Ubuntu -u jlanza sh -c ". ~/.profile && script-jlanza.sh"
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以加载自己的配置文件,然后就可以运行命令。
该选项只是运行 sh 或任何 shell,然后在该 shell 中执行您想要的命令。另一个答案也是有效的,但我最喜欢我的答案,因为我可以使用用户配置文件(路径、别名等)
| 归档时间: |
|
| 查看次数: |
10075 次 |
| 最近记录: |