[25881]  WinNT系でのバッチファイル中のリダイレクト
投稿者: さん   2003-07-28 16:16:36
今日気が付いたのですが…
Win2000にてバッチファイル中でリダイレクトを使おうとするとリダイレクト記号の前に数字が勝手に付いてしまい正常に処理されません。
たとえば…
echo ;;temp>gldict
for %%i in (*.wdc) do type %%i|nkf -e >>gldict

echo ;;temp1>gldict
for %%i in (*.wdc) do type %%i|nkf -e 1>>gldict
みたいになってしまいます。両方ともコマンドラインから個別に動かしたときは全く問題ありません。
調べてみたところ同じ症状の人はいるようですが解決法まではわかりませんでした。なにか解決法がわかる人がいましたらお願いします。

とりあえず今回はRubyで逃げるつもりですが…
この手の処理はバッチファイルの方がお手軽ですし…FreeDOSのcommand.comなら正常に処理されるようですがWin2000上で16bitDOSアプリを常用するのも気分的に良くないですし…

<< いったん書き直しました >>
  1. tsh さん   2003-07-28 18:53:07
    以前どこかで見かけたのですが、
    BATファイル→COMファイルの変換を行ってくれるソフトがあるようなので
    そのソフトを試してみてはいかがですが?
  2. K.Takata さん   2003-07-28 19:27:29
    Win2k ではリダイレクトで sh や bash などと同様の記述ができるように拡張されています。> と 1> は同じ意味ですから問題ないはずなのですが、出力ファイルの中に 1 が付け加えられているのでしょうか。
    ちなみに 2> と書けばエラー出力がリダイレクトできます。
  3. さん   2003-07-28 20:00:04
    えと…すみません…今もう一度やってみたところ正常に実行されました。

    このスレを立てたときはリダイレクトが不正…みたいなこと言われて色々試したけど結局ダメだったのですが…

    原因がわからないのが不気味ですが…お騒がせしました。