从git控制台中:如何执行一个批处理文件然后返回到git控制台?
从git控制台中:如何执行一个批处理文件然后返回到git控制台?
我有一个名为clear.bat
的小型实用脚本,可以对我的源代码进行一些清理工作。
这是一个.bat
文件,所以我可以在Windows资源管理器中轻松双击它。
有时候,我觉得从我的Git bash(msysgit,如果这很重要)执行它更方便。
为了做到这一点,我输入
cmd clear.bat exit
cmd
将我的Git bash转换为一个普通的cmd
窗口,我可以在其中轻松执行我的批处理文件。当我输入exit
时,cmd
环境被终止,我回到我的Git bash中。
有没有更简单的方法来实现这个?
我尝试过cmd /C clean.bat
,因为文档中说:
语法
CMD [charset] [options]
CMD [charset] [options] [/c Command]
CMD [charset] [options] [/k Command]
选项
/C 运行命令然后终止
/K 运行命令然后返回CMD提示符。
这对于测试很有用,以检查变量
编辑:
刚注意到帖子有问题。
我想要的是在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
被解析,所有后续参数都被忽略了。
问题的原因是在git控制台中执行批处理文件后无法返回到git控制台。解决方法是使用命令cmd "/C clean.bat"
来执行批处理文件,并返回到git控制台。如果需要发送参数,可以使用cmd "/C clean.bat param1 param2"
的方式。对于不同路径下的文件,需要使用cmd "/C \\\\SERVERNAME\\folder\\folder\\myscript.cmd"
来执行。另外,还有一种解决参数问题的方法是使用//c
。在执行命令时,也可以在最后一个参数后加一个空格。原来的解决方案链接已失效,但在github.com/msysgit/msysgit/issues/101
上有其他人提到了相同的问题。开发人员回复说这是一个上游MSYS问题,并且已经在sourceforge.net/p/mingw/bugs/1902
上提出了功能请求。