「実行」を介してWindows側に引数を渡す際に問題が発生しています
実演すると、次のようになります。
run C:\foo.exe /BUILD
'/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
ます。
私はCygwinをあまり使用しませんが、おそらく:
run 'c:\foo.exe /BUILD'
(一重引用符ではない場合、二重引用符でよいでしょうか?)
次のように引用符で囲みましたか?
run "C:\foo.exe /BUILD"
シェルが引数の所有者を混乱させているのではないかと思います。つまり、「実行」は /BUILD を渡しているのではなく、消費しています。