ファイルの指定した行から他のファイルにコピーする。【batファイル】
指定した行から最終行まで他のファイルにコピーするためのバッチファイルを作りました。
私はこれを使って実験データを整形し解析に用います。
やりたいこと。
内容としては以下の通りです。
コピーしたいファイル : a.txt
コピー先のファイル : b.txt
a.txt内のテキストをある行から最終行までコピーしてb.txtに出力します。
今回はううう
の3行目から最後まで出力してみます。
a.txtの中身
あああ いいい ううう えええ おおお かかか ききき
バッチファイルの中身
@echo off echo %1 type %1|more +2 >>%~p1%b.txt
実行結果b.txt
ううう えええ おおお かかか ききき
実行方法
- 適当なフォルダにバッチファイルを作成します。(どこでもいいはずです。)
- 作成したバッチファイルにコピーしたいファイル(a.txt)をドラック&ドロップします。
以上です。コピーしたいファイル(a.txt)があるフォルダの中にb.txtが生成されます。
わざわざコマンドを打たなくてもいい理由は、第一引数を受け取っているからです。
%1
は第一引数を表しており、ドラック&ドロップされたファイルのパスが入力されます。
そして出力ファイルは%~p1%b.txt
となっていますが、%~p1%
は第一引数で得たパスのフォルダを表しています。なので、コピーしたいファイルのフォルダの中にb.txtが生成されるわけです。
行の指定
行の指定にはtype %1|more +2 >>%~p1%b.txt
の+2
の部分を指定したい行数に変更します。
ここで注意するのが行数のカウントは0からスタートしますので、0から数えて何行目か
を指定してください。
案外簡単ですよね。
おまけ
テキストファイルの行数をカウントして出力したい場合は
type %1|find /c /v "" >>%~p1%b.txt
とするといいでしょう。(実験データの整形に利用したため。)
おわり。