• 締切済み

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

バッチファイルにて、テキストファイルの任意の行を削除したいのですが、コマンドはどのように記述すれば良いでしょうか? 初心者の為、方法が良くわかりません。  具体的には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/1415)
回答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

  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • テキストファイル(CSV)の3行目以降を削除バッチ

    数百あるテキストファイル(CSVファイル)に対し、 コマンドプロンプトでバッチ処理をして 3行目以降のデータをすべて削除したいです。 ネット検索しても探しだせず、どなたかお詳しい方、ご教授願います。 初心者なので、コマンドや専門的な用語等わかりませんが、 コピペして使えるような例文があるとありがたいです。 ※対象ファイルは指定のフォルダに集められた状態です ※上書きでも、別フォルダに新規ファイルができてもどちらでも大丈夫です ※それぞれのファイルで3行目以降の行数はことなります。

  • バッチファイルでファイル編集

    以前の質問でバッチファイルでテキストファイル内のある文字からある文字への変換が出来ることはわかったのですが、ある行に言葉を入れる事はできるのでしょうか。具体的にはテキストファイルの10行目と20行目の左端にYの上書き挿入をバッチファイルで おこないたいです。

  • バッチファイルでウインドウを閉じる方法ってありますか?

    こんにちは、皆さんの知恵を貸してください。 自分はプログラムとかコマンドプロンプトなどはまったくの初心者ですが、研究で必要に迫られて現在勉強中・修行中の大学院生です。 OSはウインドウズXPです。コマンドプロンプトを起動して、とある計算コードを走らせます。計算時間が10時間弱かかるので連続計算させる為にバッチファイルを作ることにしました。 作製してみたところ、コードのexeファイルが起動すると新しいウインドウができてそこで実行されます。そしてそのウインドウを閉じないとバッチファイルに記述した次のファイルが読み込まれません。 週末とか、深夜とかにPCの前にいなくても計算を走らせる為に組んだバッチですが、手動でウインドウを消すのであればまったく無意味です。 ここで質問が2つあります。 1.計算が終了した、と認識させるにはどういう手段があるでしょう? 2.計算が終了したらそのファイル(ウインドウ)を閉じるようなコマンドって存在しますか? 1で計算終了を判断し、2でそのウインドウを削除する事ができれば次の計算が走るようになると思うのですが… IFとかCALLとか考えてみたのですが、どうにもわからずパニックに陥っててます。どうか皆さん、よろしくお願いします。 (;_;)

  • コマンドプロンプトのバッチファイルでテキストファイル内の文字列を抜き出したい

    コマンドプロンプトのバッチファイルでテキストファイル内の文字列から何文字か抜き出すにはどうすればよいですか? たとえば,abcde****** のようにその行の最後から6文字目までとか。

  • ファイルを移動するためのバッチファイル

    テキストファイル(1行に1つのファイル名が書かれていて、ファイルの数だけの行があるテキスト)を読み込み それをもとに、パス指定した参照先ディレクトリより、1つずつファイルを取得し、 パス指定した保存先ディレクトリに保存していくという、ファイルを移動(コピー)するためのバッチファイルを作りたいのですが どのようなコマンドを記述すればよいでしょうか? (できれば、MS-DOSのバッチファイルだと助かります) 例 [list.txt] aaaaa bbbbb eeeee [参照先] aaaaa bbbbb ccccc ddddd eeeee ↓ [保存先] aaaaa bbbbb eeeee

  • バッチファイルに変換したいんですが

    テキストファイルをバッチファイルに変換したいんですが、 VISTAでは普通に.txtを.datに名前を変えればできるのですが XPでは名前を変えてもテキストファイルのままです。 XCOPYのコマンドを入れていてバックアップを取るための バッチファイルにする予定です。 すみませんがよろしくお願いいたします。

  • バッチファイルでテキストファイル読込

    バッチファイルにてテキストファイルを一行読込みたいのですが、 「,」までの位置しか取得できません。 現状の該当箇所のコマンドと読込むテキストは以下になります。 [実行するコマンド] For /F "delims=" %%i in (read.txt) Do Call :Sub %%i :Sub set DATA=%1 echo %DATA% [読込むテキスト read.txt] "111","222","333","444" "111","222","333","444" [結果] "111" 結果の通り、カンマまでしか取得できていない状態です。 どなたかご教授の方、よろしくお願い致します。

  • バッチファイル テキストファイル内の最後の\以下を削除したい

    バッチで、あるテキストファイル内の最後の\以下を削除して、その結果をバッチの値として利用したいです。 ●テスト条件 %TEMP%のtest.txt に以下のテキスト。 C:\Program Files\software\top xyz ●求める結果: 行末から最初の\以下の文字列を削除。この文字列をバッチファイルで使いたい。 C:\Program Files\software\ ●試したコマンド: なし 全体の流れとしては、バッチでquery取得したパスの不要な部分を削除して、求まったパス(のdirの結果を出力するために)を再度バッチで利用したいです。適切なコマンド・方法がありましたらお願いいたします。

  • バッチファイルで定期的にファイル削除を行う方法

    windows2003サーバーでテキストファイルにプログラムの処理結果を記述させています。 そのログファイルを1日に1回削除するバッチファイルを作成しようと考えています。 以下のような動きをするようにするにはどのように記述したら良いのでしょうか。(ログファイルの名前をlog.txtとします。) 1,log.txtを削除 2,0キロバイトのlog.txtを作成 「log.txtを削除」はdelコマンドでできますが、「0キロバイトのlog.txtを作成」でファイル新規作成のコマンドがわかりません。 もし分かる方がいましたら教えてください。

専門家に質問してみよう