- ベストアンサー
Windows7 DOSバッチファイルに関する質問
Windows7のコマンドプロンプトの バッチファイルの中から 実行ファイルを実行してその結果をリダイレクトする場合 実行ファイル名 引数 > ファイル名 と記述しますが、 実行ファイルの(省略可能な)引数が複数ある場合、 実行ファイル名 引数 ではOKですが 実行ファイル名 引数 > ファイル名 とするとエラーになります。 このような場合、 実行ファイル名 引数 > ファイル名 の部分をどのように記述すればよいでしょうか。 例えば、 Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" ではOKですが、 Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log では ハンドルされていない例外: System.IO.IOException: ハンドルが無効です。 場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 場所 System.Console.set_CursorVisible(Boolean value) 場所 ConsoleApplication1.Program.Main(String[] args) というエラーになります。 Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log の部分をどのように記述すればよいのでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>どのように記述すればよいのか分かりますでしょうか。 記述の問題ではないようです。 Bn_Cmd.exeのサブプログラムのようですね? コマンドプロンプトから起動する場合はコンソール版が起動できるようですがリダイレクトで出力先を与えられないみたいです。 リダイレクトに指定した出力ファイルには"ハンドルが無効です。"と言うエラーの情報が出力されました。 つまり、コンソール版のBn_Cmp_CMD.exeは標準コンソール以外への出力をサポートしていないと思われます。 作者に確認できれば解決策が見つかるかも知れません。
その他の回答 (5)
- bunjii
- ベストアンサー率43% (3589/8249)
>Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log >の部分をどのように記述すればよいのでしょうか。 下記のようにCallコマンドの引数として Bn_Cmp_CMD.exe を実行させれば良いのではないでしょうか?(未検証) Call Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log
補足
Call Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" はOKですが Call Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log では同じエラーになります。 推測ですが > text.log の部分が Bn_Cmp_CMD.exeの引数として渡されてしまっている からではないかと思っているのですが、 Call(Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data") > text.log という感じで "[Bn_Cmp]" "2.52" "d:\data" "e:\data"の部分だけを Bn_Cmp_CMD.exe に渡してやれば、 エラーがでなくなるような気がします。 (この記述ではエラーになりますが) Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" は Call の引数で、 引数は " " で括ることができるので、 Call "Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data"" > text.log というような感じで処理をさせたいのですが、 " "の中に"があるためエラーになります。 " "の中の"の記述ですが、 " ---> "" " ---> """ " ---> """" " ---> \" のいずれにしても別のエラーになります。 Call "Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data"" > text.log の" "の中の"の部分をどのように記述すればよいのか 分かりますでしょうか。
- masatsan
- ベストアンサー率15% (179/1159)
リダイレクトはあきらめて http://okwave.jp/qa/q9111092.html によるとログファイルができるようだから、それを処理したらいがかな?
お礼
リダイレクトはあきらめてログファイルを処理するようにします。 ありがとうございました。
- masatsan
- ベストアンサー率15% (179/1159)
必要な引数分だけダミーを並べたらどうでしょうか。
お礼
補足コメントの追記です。 >text.logをフルパスにしてみたらどうでしょうか? フルパスにしてみましたが同じエラーになります。 >exeのフォルダに書こうとしてダメなんじゃないのかな? exeのフォルダとは別のフォルダにしてみましたが 同じエラーになります。 Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log の Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" の部分をdirにした dir > text.log では、正しく text.log ファイルが書き出されます。
補足
Bn_Cmp_CMD.exeの4つまでの引数の記述例は ネット上に記載されていたので分かったのですが 5つ目以降の引数については情報がなくて よく分からないのです。
- masatsan
- ベストアンサー率15% (179/1159)
あてずっぽうですが。エラーを見るとファイルが書けないみたい。 text.logをフルパスにしてみたらどうでしょうか? exeのフォルダに書こうとしてダメなんじゃないのかな?
補足
Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" > text.log の>とtext.logの部分が Bn_Cmp_CMD.exeの5番目と6番目の引数として 解釈されているためではないかと思われるのですが Bn_Cmp_CMD.exe "[Bn_Cmp]" "2.52" "d:\data" "e:\data" の部分と > text.log の部分を、 切り分けるような記述はできないでしょうか。
- kimamaoyaji
- ベストアンサー率26% (2801/10379)
DOSですか(ディスク・オペレーティング・システム)は16BitOSで現在のCPUでは16Bit演算機能はないので動きません、つまりWindowsXP以降存在しません、Windows98がさいごとなります。 実行ファイルを実行してその結果をリダイレクトする場合 リダイレクト(redirect)とは、プログラムの入力元や出力先を通常とは違うものに変更すること。MS-DOSやUNIXで採用された機能で、WindowsではMS-DOSプロンプト(コンソールアプリケーション)で利用できる。 http://e-words.jp/w/%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88.html DOSは無いので。 Bn_Cmp_CMD.exeは http://www.geocities.jp/hitoshi_pg/Bn_Cmp/index.html に使い方が書かれていますが、これだと言われていることと随分違う気がしますが? またバッチはバッチファイルを書かないと無理です。
お礼
ありがとうござました。
お礼
そうでしたか。 Bn_Cmd.exeがそのようになっていたわけですね。 いろいろ調べていただきまして ありがとうございました。