从git控制台中:如何执行一个批处理文件然后返回到git控制台?

23 浏览
0 Comments

从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,而不必输入上述三个命令(cmdclear.batexit)。我只想在我的Git bash中执行.bat文件。显而易见的方法是创建一个单独的.sh文件,完成相同的工作,但这会导致重复的代码。


编辑2:

当我执行cmd /C clean.bat时,Git bash会变成一个普通的CMD环境,并且只显示提示符。文件clean.bat不会被执行。这和只输入cmd一样。

另外,添加一个/debug开关什么都没做。似乎只有cmd被解析,所有后续参数都被忽略了。

0
0 Comments

问题的原因是在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上提出了功能请求。

0
0 Comments

问题的出现的原因:用户想要在Git控制台中执行一个批处理文件,并且在执行完后返回到Git控制台。

解决方法:在Git控制台中输入./clear.bat即可执行批处理文件并返回到Git控制台。在旧版msysgit 1.8.0中,这将会将批处理文件作为bash脚本执行。需要注意的是,如果批处理文件有多个扩展名,比如some-file.extension.cmd,可能会出现Permission denied的错误。这种情况下,可以使用cmd "/c some-file.extension.cmd"来执行批处理文件。

0
0 Comments

从上面的内容可以看出,问题的原因是在Git控制台中执行批处理文件后无法返回到Git控制台。解决方法有三种:使用winpty实用程序运行有问题的程序,修改Git Bash的快捷方式以直接运行bash而不是mintty,并使用默认控制台主机配置它,安装并使用ConEmu。

然而,某些情况下使用winpty来解决这个问题,并给出了示例命令winpty clean.bat。但是,另一个人指出使用cmd //c语法比安装另一个软件更正确。还有人指出winpty ./clean.bat可以解决路径问题。

总结起来,解决这个问题的方法是使用winpty实用程序或使用cmd //c语法来执行批处理文件。

0