テキストファイルに固定文字挿入する方法を教えてください

このQ&Aのポイント
  • テキストファイルに固定文字を挿入する方法を知りたいです。特に、テキストファイル内の特定の場所に6桁の数字を挿入したいです。
  • 現在、テキストファイル内には特定の場所に6桁の数字が入っています。その数字を2桁おきに「/」を挿入して、「MM/DD/YY」の形式に置換したいです。
  • 日次で毎日ファイルが作成されるため、VBScriptやバッチファイルなどを使用して自動化したいです。自動でテキストファイルの特定の場所に6桁の数字を置換する方法を教えてください。
回答を見る
  • ベストアンサー

テキストファイルに固定文字挿入

テキストファイル"A.csv"があります。 3個目の「,」の後に数字6桁が入っています。 他の項目は桁数可変ですが、この部分は6桁固定です。 ex. あああああ,AAA,090523,ああああああ いい,BBBBB,090101,いいいい この"090523"を"09/05/23"と置換(2桁おきに"/"を挿入)したいのですが、スキルがないため方法がわかりません。 すでにあるファイルを処理するのであれば、Excel読み込み後に置換処理などでなんとかなると思いますが、日次で毎日ファイルが作成されるため、自動的に処理したいのです。 VBS、バッチなどのプログラムで一括で処理できないでしょうか。 お力添えをいただければありがたいです。 よろしくお願いいたします。

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

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

バッチファイルで作ってみました。A.csvと同じディレクトリにおいて使います。 バッチではA.csvを一旦A_org.csvにリネームして新しいA.csvを作ります。 もし A_org.scv が確認の為に必要でしたら、最後の行(del A_org.csv )を削除して実行してください。 :-------------------------------------- sample.bat echo off setlocal ENABLEDELAYEDEXPANSION ren A.csv A_org.csv for /F "delims=" %%a in (A_org.csv) do ( set line=%%a set tmpl=!line:*,=! set tmpl=!tmpl:*,=! set before=!tmpl:~0,6! set after=!tmpl:~0,2!/!tmpl:~2,2!/!tmpl:~4,2! call echo %%line:!before!=!after!%%>>A.csv ) del A_org.csv

ogaki_3ok
質問者

お礼

ありがとうございました。 希望する処理ができました。

その他の回答 (2)

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

#2です。 3個目の「,」の後に数字6桁とありますが、例示では2個目の「,」のあとに数字6桁があるので、例示のテキストで動くサンプルになっています。 違っていたら補足してください。 またテキスト中に「<>|」などの特殊記号があるとうまく動かない場合があるん思います。その場合はVBSやawkなどを使ったほうがいいです。

ogaki_3ok
質問者

お礼

失礼しました。 2個目の後です。

回答No.1

1. 入力ファイル(既存)と出力ファイル(新規)を開く 2. 入力ファイルから1行読んで文字列を取得 3. 文字列をSplitで分解して配列を取得 4. 配列(2)にある6桁の数字を変更 5. 配列をJoinで連結して文字列を取得 6. 出力ファイルに文字列を書き出す 7. 以降入力ファイルをすべて読むまで2~6を繰り返す VBSで行うならこんな具合でしょうか。

関連するQ&A

  • テキストファイルの置換

    テキストファイル"A.TXT"があります。 ファイルの中は項目を「,」(カンマ)で区切られています。 3個目の「,」(カンマ)の後に「日付」が入っていますが、"H21.2.5"や"H21.2.10"となっています。 1桁目は必ず"H"です。(平成の"H") ex. あああああ,AAA,H21.2.5,ああああああ いい,BBBBB,H21.2.10,いいいい この"H21.2.5"を"090205"と置換したいのですが、スキルがないため方法がわかりません。 和暦→西暦下2桁 月→2桁(1桁の時は頭"0") 日→2桁(1桁の時は頭"0") すでにあるファイルを処理するのであれば、Excel読み込み後に置換処理などでなんとかなると思いますが、日次で毎日ファイルが作成されるため、自動的に処理したいのです。 VBSなどのプログラムで一括で処理できないでしょうか。 お力添えをいただければありがたいです。 よろしくお願いいたします。

  • テキストファイルの一部を複数パターンで置換

    初めて質問させていただきます。 以下のようなテキストファイル(元ファイル) があります。 1行目 あいうえお 2行目 codea=aaaaa/$$ 3行目 codeb=11111*11111 4行目 … この2行目と3行目の「aaaaa」「11111」 の文字列を以下に従って置換し保存したいです。 置換パターンは、 別ファイルに一覧になっています。 bbbbb 22222 ccccc 33333 … これを、元ファイルの 「aaaaa」を「bbbbb」に、 「11111」を「22222」に置換し、 ファイル名を「bbbbb-22222.txt」として 保存するのを、 置換パターンの数だけ行う必要があります。 VBA、バッチは経験があります。得意分野ではありませんが… 申し訳ありませんが、ご教授いただけないでしょうか?

    • ベストアンサー
    • CSS
  • VBSでテキストファイルの文字列の桁数を調べたい

    VBSでテキストファイルを1行ずつ読み、ある桁からある項目A(20桁)が始まるとします。 項目Aは漢字が入ります。後ろ空白(1バイト空白)詰めです。 その項目Aの桁数を調べるにはどのようにVBSを組めばよいのでしょうか? VBSでMid関数とかLen関数を使ってもうまく計算してくれてないような感じなのです。 例えば 桁 →123456789012345678901234567890 data1→aaaaaaaaaこんばんわ data2→aaaaaaaaaおつかれ で strRec1 = Mid(strRecord,10,20)  とした場合、stRec1には項目Aが入る予定 data1なら5、data2なら4と返ってきてほしいのです。 ちなみにMidBでもそれぞれ10,8で返ってきてもいいです。 言い換えると、桁n~桁mまでの項目に何桁の漢字があるかを調べたいです。 よろしくお願いします。

  • CSVファイルのバッチまたはVBでの編集

    バッチおよびVBのドがつくほどの初心者です。 環境:Windows7 Pro 下記のような行が数百行ほど記載されているCSVファイル(xyz.csv)があります。 "(桁数不定の変数a)-(1桁の変数b)(1桁の変数c)","yyyymm" これをバッチまたはVBにて (1桁の変数b),(桁数不定の変数a),(1桁の変数c),yyyymm に自動的に変更したいと考えています。 例 "1234567890-12","201409" ↓ 1,1234567890,2,201409 「-」を「,」に変更したり「"」の削除、また桁数が不定でなければ指定の位置に「,」を入れることは出来そうなのですが 桁数が不定ということで、行き詰ってしまいました。 システム上 "(a)-(b)(c)","yyyymm"を "(a)-(b)(c)","(a)-(b)(c)","(a)-(b)(c)","yyyymm" に変更することは出来そうなので、先頭から検索して「-」の個数と位置で指定の文字列を消すという方法もあるのかなと思ったのですが こちらについてもやり方がまったくわからなくお手上げ状態になってしまいました。 (桁数固定なら、こちらで指定の位置だけ削除できればと思っていたのですが……) 上記処理を行えるバッチまたはVBで編集するコマンドをご教示いただければと思います。 ご回答お願いいたします。

  • バッチファイル

    VBScriptについての質問です。 先日、バッチファイルとVBSを使ってプリンター削除をするという課題が出されました。 自分は、バッチファイルでrundll32 printui.dll,PrintUIEntryを使ってプリンター削除の定義をしましたが、VBSファイルの方で何を書けば良いか分からなくなってしまいました。 恐らくVBSファイル内で、バッチファイルを起動させるための処理を書かなくてはいけないと思うのですが、どのような書き方をすれば良いのか分かりません。 一例ということでも良いので教えていただければ幸いです。 長々とすみません。

  • ["]でくくられた文字列内に存在する[,]をsedで処理する正規表現について

    PostgreSQLを使うのは初心者です。 csvファイルよりCOPYコマンドを使ってPostgreSQLのテーブルにデータを入れようとしています。 もとになるcsvファイルは、データの区切りは[,]であり、文字列は["]でくくられ、さらに["]でくくられた文字列には[,]が存在します。 <csvデータ例> 123,"aaa","b,cde",234 いろいろ調べてみた結果、COPYコマンドを実行する前に、sedコマンドで正規表現を用いて置換をすればよいとの結論にたどり着いたので、 (1)["]でくくられた文字列内の[,]を[#]に置換する  → [123,"aaa","b,cde",234] => [123,"aaa","b#cde",234] に置換したい (2)["]を除く(sed 's/\"//g')  → [123,"aaa","b#cde",234] => [123,aaa,b#cde,234] に置換したい (3)[,]をtabに置換する(sed 's/,/\t/g')  → [123,aaa,b#cde,234] => [123 aaa b#cde 234] に置換したい (4)[#]を[,]に置換する(sed 's/#/,/g')  → [123 aaa b#cde 234] => [123 aaa b,cde 234] に置換したい を順番に行う処理を考えていますが、(1)で記述する正規表現がわかりません。 正規表現も初めて扱う初心者ですので、色々試してみましたが、うまく置換できません。 どなたかご教授の程をお願いします。 なお環境は、RedHatLinux9 + PostgreSQL-7.4.9です。 以上、宜しくお願い申し上げます。

  • バッチファイルの変数をパラメーター化

    お世話様です。 WindowsXP環境に下記バッチファイルがあります。 バッチコード内は以下の通りです。 ------------------------------------------------ set TARGET_FILE=test.txt ------------------------------------------------ この【TARGET_FILE】という変数内に格納されている【test.txt】という値を パラメーターとしてあるVBS内の変数Aがそれを受け取って処理をする・・・。 という事は可能でしょうか? 上記バッチは数種類あり、【TARGET_FILE】変数内の値がそれぞれ違います。 VBSコード内は以下の通りです。 ------------------------------------------------ Option Explicit Dim FILE FILE = ○○○←ここに上記バッチ内の【TARGET_FILE】変数の値を受け取る。 MsgBox FILE ------------------------------------------------ 各バッチは上記VBSで実行したいのです。 Msgbox程度の処理は当然バッチでも可能ですが、何個もVBSを作成するのは厳しいので、 パラメーターが可能であれば、このVBS1個で済みます。 ご存知の方がおりましたら、お知恵を拝借しても宜しいでしょうか? 何卒宜しくお願い致します。

  • 【コマンドプロンプト】テキストファイル内の文字列置換

    こんにちは。 コマンドプロンプトのバッチファイルでテキストファイル内の文字列の置換を行いたいと考えております。 例えば以下のような内容があった場合、 --開始-- ABCDEFG1111 ABCDEFG ABCDEFG1111 HIJKLMN --終了-- バッチファイル処理結果として 1111 ABCDEFG 1111 HIJKLMN という結果を別ファイルに出力したいのです。 制限としては、sed,awkなどのwindows上で稼動するツールがあるようですが それらは使用できません。 どなたかご存知の方教えていただけないでしょうか よろしくお願い致します。

  • セル内の左側2文字を消す方法

    エクセル2003で、 セル内の数値(桁数ランダム)の先頭2文字が00の場合 その00のみを消去する方法はありますか? 件数は大量にありますが、先頭が00以外のものはスキップしたいです。 00を置換しようかと思ったのですが、セル内の後ろの桁にある00も 置換してしまうので、駄目でした。 すいませんが方法がありましたらご教授ください。 例> 元ファイル    A 1  00001 2  0025400 3  0066667 4  0354 5  05 ↓処理後    A 1  001 2  25400 3  66667 4  0354 5  05

  • dosでのファイルリスト取得について

    初歩的な質問ですいません。 以下のバッチファイルを作成しようと思っています。 ・特定のフォルダ配下にあるcsvファイルをバッチファイルの引数に設定したいと思っています。 例) フォルダに A.csv B.csv C.txt があるとすると バッチファイル A.csv バッチファイル B.csv を実行する。 いまいち、ファイルリストを取得してるループ処理させる方法がわかりません。

専門家に質問してみよう