2016-07-19 6 views
0

を実行しません。次の "batch.BAT"ファイル(現在はエスケープ文字を含む)は実行されませんが、より多くの入力を期待しているかのように単にハングします。 DOSのバッチファイルコマンドは、次のコマンドラインが正常に実行さ

 MagBoltz32 ^< input.txt ^> out.txt
batch.BATを実行すると、点滅するカーソルが表示されます。最終的にこのコマンドラインはFORループに入り、いくつかの入出力ファイルをループします。私はソースコードにアクセスできます。

+0

2番目のコマンドは、有効な構文のようには見えません。それがうまくいかないことは驚きではありません。それを逃れる必要はありません。 – ManoDestra

+0

'MagBoltz32'は_STDIN_(コンソール入力)にデータがあると思われます。 '<'は、 'input.txt'の内容が_STDIN_にリダイレクトされることを伝えるリダイレクション演算子を構成します。 '^>'のようなリダイレクトをエスケープした場合、実行可能ファイルはコンソール入力を待っています( 'Ctrl + Z'(ファイルの終わりのコード)と_enter_)を入力したら、何か入力してください。 '>'はコンソール出力を 'out.txt'ファイルにリダイレクトするので、' ^> 'のようにエスケープするとコンソールウィンドウに出力されると思います... – aschipfl

+0

2つのコマンド(実行可能ファイル)入力。最初の入力はテキストファイルを探し、そのファイルを大括弧で囲む必要があります。 2番目の入力は出力ファイルです。 – JWayneG

答えて

2

これは「角かっこで入力」していません。このプログラムでは、パラメータは使用されません(少なくとも、表示されている構文には含まれていません)。それはSTDINからの入力を取得し、STDOUTに書き込みます。

<input.txtは、input.txtの内容をSTDINにリダイレクトするので、プログラムはキーボードごとに入力されたように使用できます。
>output.txtは、STDOUTをファイルoutput.txtにリダイレクトします。

エスケープ文字は、特別な文字を画面上に表示するのではなく、単に実行するために必要です。したがって、リダイレクト文字をエスケープすることは意味をなさないが、リダイレクトは無効にします。

+0

"MagBoltz32 < input.txt > out.txt"という行のバッチファイルのコマンドラインへの出力は "MagBoltz32 0 out.txt"ですが、out.txtは正しく、正常に実行されました。感謝 – JWayneG

+0

それはいいです。 '<'は '0 <'( "0" = STDIN)、 '>' '(" 1 "= STDOUT)の短い形式です。数値が指定されていない場合、パーサーはデフォルト値を挿入します。 – Stephan

0

一部のOSでは、パイプをエスケープする必要があります。<>と|構文が完全に有効になる可能性があります。これは特にバッチファイル(http://www.robvanderwoude.com/redirection.php)に当てはまります...すべてのファイルがバッチファイルを実行しているのと同じパスにあることを確認しましたか? bath.BATがc:\ barになっていても、C:\ fooからバッチを実行すると、input.txtはC:\ fooにあると予想されます。

+0

私はチェックしました。リダイレクト演算子を間違ってエスケープしました – JWayneG