我遇到了通过“运行”将参数传递到Windows端的问题
为了演示,它看起来像这样:
run C:\foo.exe /BUILD
'/ BUILD'参数永远不会传递给可执行文件。有人知道 一种解决这个问题的方法?
谢谢!
答案 0 :(得分:4)
经过大量研究后,正确的答案是通过批处理文件传递 - 强制'run'只执行一个cmd,将所有执行都传递给批处理文件。
答案 1 :(得分:0)
我没有经常使用Cygwin,但可能:
run 'c:\foo.exe /BUILD'
(如果不是单一 - 那么可能是双引号?)
答案 2 :(得分:0)
您是否尝试将其括在引号中,如:
run "C:\foo.exe /BUILD"
我想知道shell是否混淆了参数属于谁 - 也就是说,“run”正在消耗/ BUILD,而不是传递它。
答案 3 :(得分: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不处理'&gt;'正确,并将其交给run
而不是ls
。