• 締切済み

バッチによるテキストファイル操作について

バッチファイルにて、テキストファイルの任意の行を削除したいのですが、コマンドはどのように記述すれば良いでしょうか? 初心者の為、方法が良くわかりません。  具体的には5000行のテキストファイルから1~20行目を削除したいと考えています。 ちなみにOSはXPと2000の両方です。 以上、どなたか宜しくお願いいたします。

みんなの回答

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

こんにちは。任意の行の削除の場合ではなく >5000行のテキストファイルから1~20行目を削除したい という要望なら以下のコマンドで可能です。ここではテキストファイルのファイル名を sample.txt とします。 more +20 sample.txt>sample2.txt sample2.txt が削除後のテキストファイルです。

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

この質問のようなテキストファイル編集の自動化は、sed でするのが一般的だけど、バッチファイルじゃないとダメってなんだろう? っていうのはおいといて For 内部コマンド使えばできるよ。 一度、『for /?』でヘルプを確認してみて! 下の例は、引数で指定したファイルの先頭から 5行を削除する……はず。 C:\>Type "sed_1,5d.bat" @Echo off Set TGT_FILE=%1 Set TMP_FILE=%TGT_FILE%.tmp Type nul>"%TMP_FILE%" For /F "skip=5 tokens=* usebackq" %%i in ("%TGT_FILE%") do Echo.%%i>>"%TMP_FILE%" Move /Y "%TMP_FILE%" "%TGT_FILE%" エラー処理書いてないから、 %TGT_FILE% の存在しないときの処理 %TMP_FILE% というフォルダがあったときの処理 %TMP_FILE% が存在したとの処理 %TMP_FILE% の書き込みができないときの処理 %TMP_FILE% を %TGT_FILE% に移動できなかったときの処理 をどうするか決めて、バッチファイルに追記して使ってね!

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

バッチじゃないんですが、JavaScriptでは? var 文字コード = "SHIFT_JIS"; if ( WScript.Arguments.length != 1 ) {     WScript.Echo("対象ファイルを指定してください");     WScript.Quit(1); } var 元データ = new ActiveXObject("ADODB.Stream"); 元データ.Open(); 元データ.Type = 2; 元データ.Charset = 文字コード; 元データ.LoadFromFile(WScript.Arguments(0)); var 改行数 = 0; while (( 元データ.Position < 元データ.Size ) && ( 改行数 < 20 )) {     if ( 元データ.ReadText(1) == '\n' ) 改行数++; } var 新データ = new ActiveXObject("ADODB.Stream"); 新データ.Open(); 新データ.Type = 2; 新データ.Charset = 文字コード; 元データ.CopyTo(新データ); 新データ.SaveToFile(WScript.Arguments(0),2); WScript.Quit(0); ファイル名の拡張子をJSにします。 サンプルはインデントに漢字空白を使っています。

ellegarden01
質問者

お礼

回答いただきありがとうございます。 たしかに教えていただいたやり方で出来ました。 ただ、今回はどうしてもバッチでないといけない理由がありまして・・・ ありがとうございました。

関連するQ&A