81

我有一个名为的小型实用程序脚本clear.bat,可以对我的资源进行一些整理工作。

它是一个.bat文件,因此我可以轻松地在 Windows 资源管理器中双击它。

有时,我发现从我的 Git bash(msy​​sgit,如果这很重要)执行它更方便。

为此,我输入

cmd
clear.bat
exit

cmd将我的 Git bash 变成一个普通的cmd窗口,我可以轻松地执行我的批处理。当我输入exit时,cmd环境被终止,我又回到了我的 Git bash 中。

这能以更简单的方式实现吗?

我试过了cmd /C clean.bat,因为文档

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

编辑:
刚注意到帖子坏了。

我想要的是clean.bat从 Git bash 中执行,而不必键入上面的三个命令(cmd、、、clear.batexit。我只想.bat从我的 Git bash 中执行该文件。显而易见的方法是创建一个单独的.sh文件来完成相同的工作,但这会导致双重代码。


编辑2: 当我执行cmd /C clean.bat时,Git bash 变成了一个普通的 CMD 环境,只显示提示。该文件clean.bat没有被执行。这就像我只是键入一样cmd

此外,添加一个/debug开关实际上没有任何作用。似乎只cmd被评估并且所有进一步的参数都被忽略。

4

6 回答 6

105

在玩了一会儿之后,我自己找到了解决方案:

cmd "/C clean.bat"

成功了。但是我不知道为什么...

于 2012-08-09T06:50:09.277 回答
51

./clear.bat会成功的。

于 2016-04-16T03:16:34.710 回答
7

Git for Windows(msysGit 已被 Git for Windows 1 取代)常见问题解答说您有 3 个选项:

  • 运行使用该实用程序有问题的winpty程序。这使您可以继续使用更好的 mintty 终端,但如果您需要许多程序的解决方法,可能会变得笨拙。

  • 修改 Git Bash 的快捷方式以bash直接运行mintty,使其使用默认控制台主机并将其配置为“快速编辑”、合理的大小和回滚以及合适的 unicode 字体。您仍然必须忍受控制台主机的其他怪癖。

  • 安装和使用ConEmu

于 2015-10-16T12:22:38.190 回答
3

我喜欢start clean,它会用 cmd 打开一个新窗口。这种方法有一些好处:

  • cmd.exe 获得本机控制台
  • 新控制台具有原生 Windows 字符编码(例如 cp1251 与 utf8)
于 2018-03-29T08:35:21.007 回答
2

在某些时候,Git for windows 增加了对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 中,参数的解析方式会根据您编译的运行时不同。基本上在 Windows 中,命令行参数作为“一个字符串”传入,然后由运行时解析。

请参阅此处以获得比您想要的更多的解释。

例如cmd,然后以不同的方式解析参数wscript.exe

最后,您有望找到适合这种方法的东西,它是三种解决方案中最“窗口式”的

方法

这在这里得到了很好的解释并且易于使用,但是添加了一个额外的/内容,这不利于可读性

于 2020-10-16T12:54:00.847 回答
0

这将起作用并且它也可以释放终端

  nohup ./nucleus.bat &
  less nohup.out
于 2021-07-22T04:58:26.890 回答