• 締切済み

For文について (DOS起動)

テキストファイルの内容を1行ずつ取り出したいと思い、以下のコマンドを実行しました。  for /f %i in (test.txt) do echo %i このコマンドをWin7及びXPのOS上コマンドプロンプトで実行した場合は問題ありませんが、MS-DOS6.22やWin98、WinMEのDOS起動ディスクなどの場合、Syntax errorとなります。 ※test.txtの内容は、TABやSpaceなし、半角英数字のみの文字列で4行程度保存しています。 この為、DOS起動ディスクでは、For文を使えないのかと思い、以下コマンドを実行した所、正常に動作しました。  for %i in (1 2 3 4) do echo %i この事から、For文にてテキストファイルの読み込みが出来ない状況のようです。 どのようにすれば、テキストファイルを読み込む事が出来ますでしょうか。 宜しくお願い致します。

みんなの回答

  • RURUFOU
  • ベストアンサー率55% (5/9)
回答No.1

test.txt が、こんな内容でC:¥に存在していて --- ここから ---- abcd efgh ijkl mnop --- ここまで ---- for /f %i in (test.txt) do echo %i をWIN7とかXPで実行すると --- ここから ---- C:\>for /f %i in (test.txt) do echo %i C:\>echo abcd abcd C:\>echo efgh efgh C:\>echo ijkl ijkl C:\>echo mnop mnop --- ここまで ---- このような実行結果になりますが DOS起動ディスクでも同じような 結果を得たいという事でよろしいでしょうか? DOSのFor文は、「/f」の機能がサポートされていないので 他のコマンドとフリーソフトを組み合わせて何とかやってみました。 type test.txt | sed -n -e "s/^\(.*\)/echo \1/g" -e "p" | srep /bx を98の起動ディスク&QEMU(エミュレータ)で実行してみました。 --- ここから ---- A:\type test.txt | sed -n -e "s/^\(.*\)/echo \1/g" -e "p" | srep /bx A:\>echo abcd abcd A:\>echo efgh efgh A:\>echo ijkl ijkl A:\>echo mnop mnop A:\> A:\>exit --- ここまで ---- このような実行結果になりました。 最後に exit って表示されますが、そこはかんべんして下さい。 この処理を行うためには SED.EXE SREP.EXE を起動ディスクに入れておく必要が有ります。 後、パイプの機能を使うので、書込可能なドライブ上で実行して下さい。 フロッピィから起動している場合でも、フロッピィが書込禁止だと動きません。 RAMドライブを作成してカレントディレクトリを移動してから実行すればOKです。 ドライブの空き容量も1キロバイト位は欲しいです。 では、ツールの入手方法です。 sed.exe は、ストリームエディタという標準入力を加工するフリーソフトです。 http://www.vector.co.jp/download/file/dos/util/fh008493.html から sedm103.lzh をダウンロードして、 解凍して出てきた sed.exe を起動ディスクに入れて下さい。 srep.exe は、標準入力を元にバッチの実行を行なうフリーソフトです。 http://dmz.xrea.jp/dahlia/soft/index_s.html から srep101.lzh をダウンロードして、 解凍して出てきた srep.exe を起動ディスクに入れて下さい。 起動ディスクに容量の関係で 各ツールが入らない場合は upx を使ってファイルサイズを減らすのも手です。 upx.exe は、拡張子がEXE等の実行ファイルを圧縮するフリーソフトです。 http://upx.sourceforge.net/ から upx308w.zip をダウンロードして、 解凍して出てきた upx.exeを作業用のフォルダに入れて下さい。 圧縮したいファイルを upx.exe が有るフォルダに入れて upx --best --8086 sed.exe upx --best --8086 srep.exe と入力して圧縮後のファイルを起動ディスクに入れて下さい。 それでも足りない場合は upx --best --8086 himem.sys upx --best --8086 jfont.sys upx --best --8086 jdisp.sys で、このあたりファイルを圧縮して容量を稼いで下さい。 それでは最後に 1行づつの表示じゃないですが type test.txt とか more test.txt ※ 要 more.com そして行が多いと表示が止まる じゃダメですか?

関連するQ&A

専門家に質問してみよう