2011-02-23 244 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