2009-02-05 64 views
3

選項我在傳遞參數通過「跑」到窗戶邊逃逸「運行」命令行中的cygwin

爲了說明問題,它看起來是這樣的:

run C:\foo.exe /BUILD 

的「/ BUILD'參數永遠不會傳遞給可執行文件。任何人都知道 的方式來解決這個問題?

謝謝!

+0

更新: 只是爲了澄清,我試過傳遞整個字符串在引號中轉義,即:運行「c:\ foo.exe/BUILD」 – 2009-02-05 17:44:02

+0

不是更好使用雙\ \:運行「C:\\ foo.exe/BUILD」? – mmmmmmmm 2009-02-05 17:47:48

回答

4

經過大量研究後,正確的答案是通過批處理文件 - 強制「運行」只執行一個cmd,將所有執行關閉傳遞給批處理文件。

0

我不使用Cygwin了很多,但可能:

run 'c:\foo.exe /BUILD'

(如果不是單幅那麼也許雙引號?)

+0

沒有運氣那裏,忘了提及= = – 2009-02-05 17:45:10

0

您是否嘗試過在像引號引起的:

run "C:\foo.exe /BUILD" 

我不知道shell是否會讓參數所屬的人感到困惑 - 也就是說,「run」正在消耗/ BUILD,而不是傳遞它。

0

foo.exe應該做什麼,你怎麼知道它沒有得到/ build命令行選項?如果你這樣做info run你會得到:

Windows programs are either GUI programs or console programs. When 
started console programs will either attach to an existing console 
or create a new one. GUI programs can never attach to an exiting con- 
sole. There is no way to attach to an existing console but hide it if 
started as GUI program. 

run will do this for you. It works as intermediate and starts a pro- 
gram but makes the console window hidden. 

最後一點是很重要的 - 它是隱藏控制檯窗口。所以,你會看到這樣的事情:

</cygdrive/d/sandbox> $ run ls -la 
</cygdrive/d/sandbox> $ 

,但如果你運行此相反,你會看到不同的東西:

</cygdrive/d/sandbox> $ cat foo.lst 
cat: foo.lst: No such file or directory 
</cygdrive/d/sandbox> $ run ls -la >foo.lst 
</cygdrive/d/sandbox> $ 
</cygdrive/d/sandbox> $ cat foo.lst 
total 9272280 
drwx------+ 15 jcasadonte  ????????    0 Feb 7 10:39 . 
drwxrwxr-x+ 14 Administrators SYSTEM    0 Feb 7 00:44 .. 
-rwx------+ 1 jcasadonte  ????????   26300 Apr 10 2006 ATT01779.jpg 
[...etc...] 

第一個命令正在運行,但它打印到非現有的控制檯窗口。

注意:我會用DOS命令解釋器完成這個例子,因爲看起來你正在嘗試這樣做,但是XP cmd.exe不能正確處理'>',而是將它交給run而不是ls