用&&分隔的批处理命令行参数不被解释为单一的论点

时间:2017-01-25 22:01:53

标签: batch-file cmd msys2

我将这个名为lxss.cmd的有用批处理脚本添加到我的PATH:

::@ECHO OFF
@ECHO ON
set arg1=%*
"C:\Windows\System32\bash.exe" -c "%arg1%"

正在输出:

User@LANTI-DESKTOP C:\Users\User
$ lxss lsb_release -a && uname -a

User@LANTI-DESKTOP C:\Users\User
$ set arg1=lsb_release -a

User@LANTI-DESKTOP C:\Users\User
$ "C:\Windows\System32\bash.exe" -c "lsb_release -a"
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
MSYS_NT-10.0 LANTI-DESKTOP 2.6.1(0.305/5/3) 2017-01-25 00:01 x86_64 Msys

正如您所看到的,uname -a命令从执行中离开,而是由MSYS2运行,MSYS2也出现在我的PATH中。可能&&命令也由MSYS2处理。但如果set arg1=lsb_release -a行也包含&& uname -a,则这不会成为问题。

我希望实现的预期输出:

User@LANTI-DESKTOP C:\Users\User
$ "C:\Windows\System32\bash.exe" -c "lsb_release -a && uname -a"
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
Linux LANTI-DESKTOP 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

我找到%*变量here,但看起来&&终止了读数。有没有办法达到我想要的目的?

修改

正如阅读here Windows和Linux &&命令基本上做同样的事情。

所以我稍微编辑了我的脚本:"C:\Windows\System32\bash.exe" -c %*

现在我使用此命令执行:lxss "lsb_release -a && uname -a"

哪种方法有效,但输入次数越少越好,看起来尽可能像linux一样。有什么想法吗?

0 个答案:

没有答案