選項我在傳遞參數通過「跑」到窗戶邊逃逸「運行」命令行中的cygwin
爲了說明問題,它看起來是這樣的:
run C:\foo.exe /BUILD
的「/ BUILD'參數永遠不會傳遞給可執行文件。任何人都知道 的方式來解決這個問題?
謝謝!
選項我在傳遞參數通過「跑」到窗戶邊逃逸「運行」命令行中的cygwin
爲了說明問題,它看起來是這樣的:
run C:\foo.exe /BUILD
的「/ BUILD'參數永遠不會傳遞給可執行文件。任何人都知道 的方式來解決這個問題?
謝謝!
經過大量研究後,正確的答案是通過批處理文件 - 強制「運行」只執行一個cmd,將所有執行關閉傳遞給批處理文件。
我不使用Cygwin了很多,但可能:
run 'c:\foo.exe /BUILD'
(如果不是單幅那麼也許雙引號?)
沒有運氣那裏,忘了提及= = – 2009-02-05 17:45:10
您是否嘗試過在像引號引起的:
run "C:\foo.exe /BUILD"
我不知道shell是否會讓參數所屬的人感到困惑 - 也就是說,「run」正在消耗/ BUILD,而不是傳遞它。
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
。
更新: 只是爲了澄清,我試過傳遞整個字符串在引號中轉義,即:運行「c:\ foo.exe/BUILD」 – 2009-02-05 17:44:02
不是更好使用雙\ \:運行「C:\\ foo.exe/BUILD」? – mmmmmmmm 2009-02-05 17:47:48