4

我在通过“运行”将参数传递到 Windows 端时遇到问题

为了演示,它看起来像这样:

run C:\foo.exe /BUILD

'/BUILD' 参数永远不会传递给可执行文件。有人知道解决这个问题的方法吗?

谢谢!

4

4 回答 4

5

经过大量研究后,正确的答案是通过批处理文件传递它 - 强制“运行”只执行一个 cmd,将所有执行传递给批处理文件。

于 2009-02-09T21:54:58.447 回答
0

我不经常使用 Cygwin,但可能:

run 'c:\foo.exe /BUILD'

(如果不是单引号,那么可能是双引号?)

于 2009-02-05T17:31:07.367 回答
0

您是否尝试将其括在引号中,例如:

run "C:\foo.exe /BUILD"

我想知道 shell 是否混淆了参数属于谁 - 也就是说,“运行”正在消耗 /BUILD,而不是传递它。

于 2009-02-05T17:33:17.877 回答
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.

于 2009-02-07T15:41:40.597 回答