データ抽出のバッチファイル作成方法

このQ&Aのポイント
  • 1つのフォルダ内に複数のテキストファイルがあり、指定した行とその行の3番目〜5番目の文字を抽出する方法について教えていただきたいです。
  • フォルダ内の情報は、フォルダ名「folder」内にあります。ファイル名は「testX.txt」や「textY.txt」で、ファイルの中身は1行目から4行目までのテキストです。
  • 具体的には、2行目の「ccc」と「qqq」の抽出方法を知りたいです。質問にお答えいただけると嬉しいです。
回答を見る
  • ベストアンサー

データ抽出のご質問

下記のようなことができるバッチファイルを作成できないかと思ってます。 一つのフォルダに 複数のテキストファイルがあり、 そのテキストファイルの 指定した行と その指定した行の3番目~5番目の文字を抽出したい考えてます。 フォルダ内の情報は、下記の感じです。 フォルダ内(フォルダ名:folder)には、このようなファイルがあります。 ファイル名: testX.txt ファイル内容: 1:aaa 2:bbb 3:ccc 4:ddd ファイル名: textY.txt ファイル内容: 1:ooo 2:ppp 3:qqq 4:rrr ここでは、2行目の「ccc」と「qqq」を考えてます。 皆さんからのご教示頂けると幸いです。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.2

この質問ならバッチファイルの達人が現れてすぐに解決、と思っていたのですがなかなか現れないので回答させて頂きます。 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET /A LN=%2 SET /A LN-=1 SET /A SP=%3 SET /A SP-=1 IF "%LN%" GTR "0" ( SET LS=SKIP=%LN% ) ELSE ( SET LS= ) FOR %%F IN (%1) DO ( SET F1=%%F CALL :SUB1 SET VAR1=!VAR1:~%SP%,%4! ECHO !VAR1! ) ENDLOCAL GOTO ENDOFTHISFILE :SUB1 FOR /F "%LS% TOKENS=*" %%T IN (!F1!) DO ( SET VAR1=%%T EXIT/B ) :ENDOFTHISFILE 使い方ですが、上記のバッチファイルのファイル名がextract1.bat、処理するテキストファイルがあるフォルダがd:\txtであるとすると、 extract d:\txt\*.txt 2 3 3 としてください。 引数の3つの数字は、2行目の3文字目から3文字を抽出して表示、という意味です。 動作確認は Windows XP SP3 で行いました。 私もこんなに複雑なバッチファイルを書くのは初めてなのでよくわからず苦労しましたが、パッチファイルって意外といろいろ出来るのですね。 でも、他のプログラミング言語やテキスト処理ツールが使えるならそういうものを使った方がよさそうな気がします。

Ledondo
質問者

お礼

遅くなりましたがありがとうございます。 参考にさせて頂きます。

その他の回答 (1)

noname#192382
noname#192382
回答No.1

エクセルファイルのデータならマクロで容易にできる問題です。ではテキストファイルをどうやってエクセルファイルに変換するかですが、データとデータの間がTABキーで区切られていれば、コピー&ペーストでテキストデータがエクセルデータに変換できます。

関連するQ&A

  • PerlでCSV形式のファイルの一部分だけを抽出する方法

    Perlをやっていて困っていることがあります。 CSV形式のファイルを開いて、変数に代入した後の処理がわかりません。 どのようにしたいかというと・・・ aaa,bbb,ccc,ddd,eee,fff ggg,hhh,iii,jjj,kkk,lll mmm,nnn,ooo,ppp,qqq,rrr sss,ttt,uuu,vvv,www,xxx yyy,zzz,111,222,333,444 というファイルを読み込んだとします。その後 'fff' の部分だけをスカラー変数に取り込みたいときにはどのような 関数を実行すればいいのでしょうか。 困っています、お願いします。

    • ベストアンサー
    • Perl
  • unixのコマンドでSQLのようにJOINする

    unixのコマンドでSQLのJOIN(直積)と同じことをする方法はありますか? やりたいのは同じ結合キーが複数行ある場合です。 入力ファイル1(結合キーは1列目) 1,AAA 2,BBB 2,CCC 3,DDD 入力ファイル2(結合キーは1列目) 1,PPP 2,QQQ 2,RRR 出力結果 1,AAA,PPP 2,BBB,QQQ 2,BBB,RRR 2,CCC,QQQ 2,CCC,RRR 結合キー「2」は入力ファイル1にも入力ファイル2にも2行づつ存在するので SQLのJOINと同じように組み合わせのパターン全部を出力し、 結合キー「3」は入力ファイル2には存在しないので出力したくありません。 もし簡単なコマンドがなければawkやperlを使うしかないでしょうか・・・。 環境はHitachi系のunixだったと思います(うろ覚え) ちなみにこういう質問はこのカテゴリ(Linux系OS)で合ってますでしょうか。プログラミングと迷ったのですが・・・。

  • pythonに関する質問です

    >aaa bbb ccc [ddd dd] >eeee ffff gggg [ hhhh hhh] >iiii jjj kkkk >lll mmmm nnnn >ooo ppp [ qqq qq ] > rrr sss [ ttt] uuu といった文字列があるとします。 [ ]の中の文字を[]も一緒に「>」のすぐ後ろに移動させたいのですが、どのようにすればよいのでしょう? splitでは[]をまとめて扱えないうえ、[]は切り取ってしまうので使えません。はっきり言ってお手上げです。 どうかよろしくお願いします。

  • csv形式のデータの一部を削除して、上書きする方法

    前回も似たような(?)質問をしたんですが 今回も質問させてください。CSVに関して(CSVだけというわけではありませんが) 以下のようなデータを読み込んで、配列変数に格納後... aaa,bbb,ccc,ddd eee,fff,ggg,hhh iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt ↑のデータを、下のようなデータにして、保存しなおすにはどうすればよいでしょうか。(上から二列目を削除して前のデータに保存しなおす) aaa,bbb,ccc,ddd iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt 変な質問でもうしわけございませんが、回答できるかたお願いします。

    • ベストアンサー
    • Perl
  • スペース区切りのテキストデータ

    VB2005.netを使っています。 スペース区切りの2つのテキストデータが 2つのTEXTBOX内あります。 AA BBB CCC DD EEE FF GGG HHH II JJJ AA LLL MMM NN OOO FF QQQ RRR SS TTT このAAの列とCCC列を抜き出して表示させ、 AA CCC-MMM FF HHH-RRR といった計算の後の数字を行にして表示 させたいのですが、何かよい方法があるでしょうか? よろしくお願いします!

  • ファイルのデーター削除

    下記のデーターが入っているabc.txtのファイルから 初めの2行を削除したいのですがよろしくお願いします。 10,aaa,100 11,bbb,200 12,ccc,200 13,ddd,300

    • 締切済み
    • PHP
  • 配列のソート

    教えていただけますか? 一つの配列にサイズの異なるオブジェクトがいくつか入っています。 もう一方にもサイズの異なるオブジェクトがいくつか入っています。 双方の配列内のオブジェクトは同一ではありません。 しかしサイズが同一の異なるオブジェクトが対として入っています。 双方配列内のオブジェクトを同じサイズの順番で並ぶように、片方の配列の順番を並べ替えるにはどのようなアルゴリズムがよいのでしょうか? よろしくお願いします。 例 配列A (aaa:size5) (bbb:size3) (ccc:size2) (ddd:size9) 配列B (ppp:size9) (qqq:size3) (rrr:size2) (sss:size5) を 配列A (aaa:size5) (bbb:size3) (ccc:size2) (ddd:size9) 配列B (sss:size5) (qqq:size3) (rrr:size2) (ppp:size9)

  • dosでサイズを比較して異なるファイルだけコピー

    dosで全フォルダ内のファイルサイズを比較して異なるファイルだけコピーしたい 次のようなファイル構成で AAAフィルダ    BBBフォルダ  cccフォルダ    cccフォルダ   abc.txt      abc.txt   def.jpg      def.jpg  dddフォルダ    dddフォルダ   ghi.txt      ghi.txt   jkl.jpg      jkl.jpg AAA\ccc\abc.txtとBBB\ccc\abc.txt AAA\ccc\def.jpgとBBB\ccc\def.jpg AAA\ddd\ghi.txtとBBB\ddd\ghi.txt AAA\ddd\jkl.jpgとBBB\ddd\jkl.jpg 拡張子は問わずそれぞれに対するファイルのファイルサイズを比較して 大きくても小さくても異なるファイルだけbbbフォルダ内に上書きコピー したくご教授をお願いします

  • ファイル処理について

    宜しくお願いします。 ファイル「ppp.txt」の中の文字列を逆にする コードを組みたいのですが、どの本を読んでも ロジックが見当たりません。 ファイルppp.txtの中は以下です。 AAA BBB CCC DDD EEE -> EEE DDD CCC BBB AAA としたいのです。 じっくり探せばあると思うのですが、 急ぎなので投稿しました。 これを実現するPerlスクリプトコードを 教えて頂けないでしょうか。 宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • PowerShellで特定ファイルを移動

    PowerShellを使って、特定のファイル(ファイル名に年度の入ったもの)を別のファイルに 移動させたいのですが、どうすればいいのでしょうか? フォルダ1 AAA.TXT BBB_20120309.TXT  ←このファイルだけをフォルダ2へ移動させたい CCC.TXT フォルダ2 DDD_20111231.TXT EEE_20101105.TXT よろしくお願いいたします。

専門家に質問してみよう