2011-02-23 200 views
2

我试图通过CMD使用Cygwin自动运行脚本。我基本上创建了一个进入目录并执行一个.SH文件的BAT文件。 SH文件与Cygwin进行了对比,并且我在命令行中尝试了类似“cygwin update.sh”的内容。但它真正打开的是Cygwin。我希望Cygwin自动运行脚本文件。有没有简单的方法来做到这一点,我一直在努力寻找但不能。谢谢!Cygwin自动脚本启动

+0

另一件可以帮助的事情,我如何在Windows上的CMD中为Cygwin调用添加一个文件作为参数? – Bombillazo 2011-02-23 22:46:01

+0

我看到你可以启动任何把'bash --login -i'行(最后一行)放在前面的命令。你可以使用cygwin.bat的副本并添加你的东西。我试过'ls'并运行正常。也试过apache启动,但失败。使用bash_profiles不是一种选择,因为它是在打开cygwin时加载的。还尝试将参数添加到cygwin.bat,但它们都没有像我期望的那样工作,因为真正的需求是将参数添加到bash控制台。 – erm3nda 2014-01-18 08:31:18

回答

1

您将需要使用特定的shell调用shell脚本,例如庆典。

当打开Cygwin时,请致电which bash找出二进制文件所在的位置。 Cygwin还附带了可以在Cygwin和Win32窗体之间转换路径的工具,这在您的情况下非常有用。

还有一件事可能会发挥作用,具体取决于您的设置。有一个名为PATHEXT的环境变量,它声明CMD认为“可执行”的文件扩展名。如果配置了Windows,以便shell的“打开”动词为文件扩展名.sh(在您的情况下)执行正确的shell,这可以用于您的优势。

祝你好运。

+0

谢谢!我认为这是有效的! – Bombillazo 2011-02-24 13:56:04

1

我也找到了!

http://rothmanshore.com/2011/01/26/kick-off-a-cygwin-script-from-a-windows-bat-file-with-a-different-working-directory/

我不明白它在第一,但随后担任我想它。只要有人知道,是否有一种方法可以在没有打开CMD窗口的情况下运行脚本?谢谢

+0

不会有这样的选项,因为我所知的各个二进制文件都使用控制台子系统,而不是GUI。因此,如果父代不是控制台应用程序,则加载器已经分配了一个控制台窗口。如果你想避免这种情况,你必须使用'CreateProcess'开始脚本,并将标准句柄('stdin','stdout'和'stderr')重定向到你在代码中处理的管道。 – 0xC0000022L 2011-02-24 15:55:52

+0

oooh好的,谢谢!我只是保持它那样没有输出到GUI窗口 – Bombillazo 2011-02-24 18:00:58

+0

离线链接:( – erm3nda 2014-01-18 07:50:02

1

从Cygwin终端,读man mintty。从Windows命令提示符尝试如下所示:

c:\cygwin\bin\mintty --hold always --exec /cygdrive/c/path/to/bash/script.sh