
No.3ベストアンサー
- 回答日時:
98SEから2003までのすべてのWindowsに標準搭載されているコマンドでFORと>(リダイレクト)を使って出来ます。
FOR /F "TOKENS=1*" %A IN ([元ネタファイル名]) DO ECHO %A > [出力先ファイル名]
(大カッコ([ ])は必要ありませんが、普通のカッコ( () ) は必要です。)
元ネタのファイルサイズが大きかったら少々思い処理になるかもしれませんが、所詮テキストファイルですので、極端に時間がかかるものでもないでしょう。
なお、元ネタのファイルはSVS形式などのファイルだと思いますが、そうだとするとフィールドの区切り文字をそのデータ内に含まれないものにするといいですね。FORのなかに" "で囲まれた部分がありますが、そこに 「delims=...」などとデータ内に無い文字列を指定します。"TOKENS=1* delims=..."というようにTOKENSとはスペース区切りで追加します。
(今回、元ネタのデータがどういうものか分からないのではっきりとした答えを書きようがありません。データの形式によっては例外処理対応をする必要もあります。
バッチで組むならもっと軽くする方法はありますね。なお、その際、FORの内部変数を%%Aとする必要がありますので気をつけましょう。今回はコマンドラインでということですので、コマンドライン1行で出来るものとしています。
lar様:
補足まで頂きまして有難うございます。
for文により最終行の抽出できました!
この構文で最終行のみ抜き出せる理由が
まだ理解できていませんが、勉強させて頂きます。
御世話をお掛け致しました。
No.4
- 回答日時:
すみません。
訂正をいくつか。SVS→CSV
コマンドラインでと→コマンドで
でしたね。これがコマンドラインからなのかバッチスクリプトで処理していいのか判断が出てきますね。
私が、先の回答であげていたのは、その元ネタファイルを1行ずつファイルに上書きでリダイレクトすれば最後の行を書き込んだ時点で最後の行が残るということになります。
WindowsのコマンドではUNIXと違い、テキスト処理ができるものがあまり揃ってないのでしばしばこう言う裏技的な処理が必要になってきますね。まさにパズル状態です。
もし、その時々の処理の「最後の行」をログファイルのように管理したいのでしたら、この後にそのファイルから別のファイルに>>で追記リダイレクトするといいでしょう。
また、ファイルに1行1行書き込むよりも変数に上書きで叩き込み、最後にその変数をファイルに書き出すと処理は幾分早いでしょうね。
やり方はいろいろあると思います。もっと良い解もあると思いますので、研究されてはいかがでしょうか?
No.2
- 回答日時:
DOSコマンドでそれを実現する機能は標準では付いてないようです。
unix系ではtailというプログラムがあって、それをdosに移植したものがありますので、使ってみてください。
参考URLにあるものをWinXP Proで使ってみましたが、できました。
リダイレクトについては大丈夫ですか?
念のために表示結果をファイルに書きたいときは
>tail.exe inputfile > outputfil
というように、コマンドの後に > と 出力先のファイル名を指定すれば、できます。
追記したいなら > ではなく >> で、後ろに追加されます。
参考URL:http://www.vector.co.jp/soft/dos/util/se007619.h …
crum様:
有難うございます。
早速試してみます。
>unix系ではtailというプログラムがあって、それをdosに移植したものがありますので、使ってみてください。
こういうソフトがあるんですね(^^"
また結果報告をさせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
テキストファイルの最終行を削除したいのですが
その他(プログラミング・Web制作)
-
*.txtファイルの最終行だけ参照して、バッチファイルを作りたい
UNIX・Linux
-
4
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
5
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
6
バッチで指定ファイルの文末に改行コードをつけたい
その他(コンピューター・テクノロジー)
-
7
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
8
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
9
バッチで特定文字が含まれる先頭行を取得したい
Windows Me・NT・2000
-
10
コマンドプロンプトで変数内に特殊文字がある場合のエスケープ方法
Windows 95・98
-
11
DOSバッチにて外のファイルの指定行を読む
Windows Vista・XP
-
12
コマンドプロンプトでのエスケープ文字
Windows 10
-
13
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
14
dirコマンド一文ででフォルダの容量を表示するには
Windows 10
-
15
Windowsのバッチファイルを利用しtxtファイルの指定のした位置に文字を追加する方法
その他(プログラミング・Web制作)
-
16
バッチコマンドで指定行を抽出しファイル名を含める
その他(プログラミング・Web制作)
-
17
バッチファイルで改行の出力
UNIX・Linux
-
18
バッチファイル 二つ上のディレクトリのパス取得
その他(プログラミング・Web制作)
-
19
COPYコマンドで結合すると余計な改行コードができる
その他(プログラミング・Web制作)
-
20
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
関連するQ&A
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
テキストファイルから最終行の抽出
-
5
ftpコマンドで丸ごとダウン...
-
6
DOSコマンドのFOR文で空白を含...
-
7
コマンドプロンプト dir でのソ...
-
8
DVDの中身を確認したい
-
9
"ls -l"でのタイムスタンプ表示...
-
10
dumpコマンドのファイルへのリ...
-
11
常時書き込みされているファイ...
-
12
~以外を削除する場合(rmコマ...
-
13
ピクチャクリッピングのファイ...
-
14
ファイルの属性を変更できない
-
15
batファイルの強制終了を回避し...
-
16
コマンドプロンプトでの内容保...
-
17
HOSTファイルとDNSの関連付けが...
-
18
cpコマンドとオーナー・グルー...
-
19
xcopyのエラー情報のはき...
-
20
lsでは一画面ずつ表示できませ...
おすすめ情報