我有一个名为clear.bat
的小实用程序脚本,可以对我的源代码进行一些内务处理工作。
这是一个.bat
文件,因此我可以轻松地在Windows资源管理器中双击它。
有时候,我觉得从我的Git bash(msysgit,如果这很重要)执行它会更方便。
为此,我输入
cmd
clear.bat
exit
cmd
将我的Git bash变成了一个普通的cmd
窗口,我可以轻松地执行我的批处理。当我输入exit
时,cmd
环境终止,我又回到了我的Git bash中。
这可以通过更简单的方式实现吗?
我试过cmd /C clean.bat
,因为the docs说
Syntax
CMD [charset] [options]
CMD [charset] [options] [/c Command]
CMD [charset] [options] [/k Command]
Options
/C Run Command and then terminate
/K Run Command and then return to the CMD prompt.
This is useful for testing, to examine variables
修改
刚注意到帖子坏了。
我想要的是从Git bash中执行clean.bat
,而无需输入上面的三个命令(cmd
,clear.bat
,exit
)。我只想在我的Git bash中执行.bat
文件。显而易见的方法是创建一个单独的.sh
文件来执行相同的工作,但这将导致双重代码。
编辑2:
当我执行cmd /C clean.bat
时,Git bash变成一个普通的CMD环境,只显示提示。文件clean.bat
未执行。这就像我输入cmd
一样。
此外,添加/debug
开关确实没什么。似乎仅评估了cmd
,并且忽略了所有其他参数。
答案 0 :(得分:71)
在玩了一下之后,我自己找到了解决方案:
cmd "/C clean.bat"
诀窍。但我不知道为什么......
答案 1 :(得分:37)
./clear.bat
可以解决问题。
答案 2 :(得分:5)
Git for Windows(msysGit已被Git for Windows 1取代)FAQ表示您有3个选项:
答案 3 :(得分:1)
在某些时候,Windows版Git增加了对MSYS_NO_PATHCONV
环境变量的支持,因此,除了@eckes和@ AlikElzin-kilaka解决方案之外,您还可以
MSYS_NO_PATHCONV=1 cmd /c clean.bat
总的来说,我更喜欢这种解决方案,因为它可以使代码与普通bash最为接近,并且有多种方法可以导出MSYS_NO_PATHCONV
,具体取决于您的首选情况。
注意:Git for Window的bash不支持MSYS2环境变量MSYS2_ARG_CONV_EXCL
为什么cmd "/c clean.bat"
不产生其他错误?
原来,Windows中的参数解析与* nix中的通用规则不同。取而代之的是,在Windows中,根据runtime you compile against对参数进行了不同的解析。基本上在Windows中,命令行参数作为“一个字符串”传递,然后由运行时解析。
请参阅here,以获取比您期望的更多的解释。
例如cmd
与wscript.exe
最后,您可以找到可以使用此方法的东西,这是这三种解决方案中最“窗外的”方式
here解释得很好并且易于使用,但是增加了一个额外的/
,这不利于可读性
答案 4 :(得分:0)
我喜欢start clean
,它会打开一个带有cmd的新窗口。这种方法有一些好处:
答案 5 :(得分:0)
这会起作用,它也会释放终端
nohup ./nucleus.bat &
less nohup.out