Batch file 用&;分隔的批处理命令行参数&;没有被解释为一个单独的论点

Batch file 用&;分隔的批处理命令行参数&;没有被解释为一个单独的论点,batch-file,cmd,msys2,Batch File,Cmd,Msys2,我的路径中添加了名为lxss.cmd的有用批处理脚本: ::@ECHO OFF @ECHO ON set arg1=%* "C:\Windows\System32\bash.exe" -c "%arg1%" 输出: User@LANTI-桌面C:\Users\User $lxss lsb_发行版-a&&uname-a User@LANTI-桌面C:\Users\User $set arg1=lsb_版本-a User@LANTI-桌面C:\Users\User $“C:\Windows\Sys

我的路径中添加了名为
lxss.cmd
的有用批处理脚本:

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

User@LANTI-桌面C:\Users\User
$lxss lsb_发行版-a&&uname-a
User@LANTI-桌面C:\Users\User
$set arg1=lsb_版本-a
User@LANTI-桌面C:\Users\User
$“C:\Windows\System32\bash.exe”-C“lsb\U发行版-a”
没有可用的LSB模块。
分发服务器ID:Ubuntu
说明:Ubuntu 16.04.1 LTS
发行日期:16.04
代号: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也处理了
&&
命令。但如果
set arg1=lsb_release-a
行也包含
&&uname-a
,则这不会是问题

我希望实现的预期产出:

User@LANTI-桌面C:\Users\User
$“C:\Windows\System32\bash.exe”-C“lsb\U发行版-a&&uname-a”
没有可用的LSB模块。
分发服务器ID:Ubuntu
说明:Ubuntu 16.04.1 LTS
发行日期:16.04
代号:xenial
Linux LANTI-DESKTOP 3.4.0+#1抢占周四8月1日17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
我找到了
%*
变量,但看起来像是
&&
终止了读数。有没有办法实现我想要的

编辑:

在阅读Windows和Linux的
&&
命令时,基本上做了相同的事情

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

现在我执行这个命令:
lxss“lsb\u release-a&&uname-a”


这是可行的,但如果输入更少,并且看起来尽可能像linux,会更好。有什么想法吗?

问题在于,
&&
是一个统一的命令分隔符,它需要位于引号之间或像
^&^&
那样转义,以便解析器无法识别,因此无法执行。您需要显示如何提供参数……它位于第一个命令行中,这是我输入的执行命令:
$lxss lsb_release-a&&uname-a
。对于
arg1
,不可能编写一个正则表达式来始终将
&
替换为
^&^&
?批处理文件是由Windows命令处理器
cmd
执行的,它自己使用
&
。你到底为什么要用批处理fie呢?我试着尽可能多地节省打字,但看起来我需要处理逗号。由于路径中显示了其他
bash
,因此我包含了
bash.exe
的完整目录,我不想每次都键入该目录,另外我想用LXSS等效目录替换MSYS2中的升华文本的
clang
clang格式