我有一个名为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
得到评估,所有进一步的参数都被忽略了。
6条答案
按热度按时间mpgws1up1#
在玩了一会儿之后,我自己找到了解决办法:
但我不知道为什么。
rpppsulh2#
./clear.bat
就可以了。qfe3c7zg3#
Git for Windows(msysGit已被Git for Windows 1所取代)常见问题解答指出您有3个选项:
winpty
工具有问题的程序。这允许你继续使用更好的Mintty终端,但如果你需要许多程序的变通方法,可能会变得笨拙。bash
而不运行mintty
,这样它就可以使用默认的控制台主机,并将其配置为“快速编辑”、合理的大小和回滚以及合适的unicode字体。kd3sttzy4#
我喜欢
start clean
,它用cmd打开一个新窗口。这个方法有一些好处:xjreopfe5#
在某个时候,Git for windows添加了对
MSYS_NO_PATHCONV
环境变量的支持,所以除了@eckes和@AlikElzin-kilaka解决方案,您还可以一般来说,我更喜欢这种解决方案,因为它允许代码最接近于普通的bash,并且根据您的偏好情况,有许多方法可以导出
MSYS_NO_PATHCONV
。注意:Git for Window的bash不支持MSYS 2环境变量
MSYS2_ARG_CONV_EXCL
其他解决方案
奇怪的引用解决方案
为什么
cmd "/c clean.bat"
不会产生其他错误?事实证明,windows中的参数解析并不像 *nix中那样遵循同样的通用规则,而是根据runtime you compile against对参数进行不同的解析。基本上,在windows中,命令行参数作为“一个字符串”传入,然后由运行时解析。
请参阅here(archive),以获得比您想要的更多的解释。
例如,
cmd
与wscript.exe
解析参数的方式不同最后,您有望找到与此方法配合使用的方法,并且它是三种解决方案中最“窗口式”的一种
/方法
这是很好的解释here和简单的使用,但增加了一个额外的
/
,这并不有助于可读性vxf3dgd46#
这将工作,它释放终端太