人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

大量のテキストファイルの「ある文字列」1箇所を置換をかけたいのですが、
オーバーフローしてしまい困っています。お力頂ければ幸いです。

テキストファイルは1ファイルにつき3KB程度です。
ですが、そのようなファイルが約40万個あります。
(ですので総容量は3KB×40万個=1.2GBもあります)
全てあるフォルダ内にあります。

全てのテキストファイルに共通して、ある文字列があり、
それを置換(正確には削除)をかけたいと思っています。

テキストファイルのある文字列を置換するには、
【1】フリーソフトを使う
【2】コマンドプロンプトを使う
【3】ExcelのVBAを使う
などいろいろなやり方があると思いますが、【1】はいくつかのものを
使ってみましたが、数百ファイル程度でオーバーフローしてしまいだめでした。

全文はこちら(500文字におさまらず)
http://pub.idisk-just.com/fview/qTXX5emK7xt1jJFhX0tr7xTDNHG0PK0wlI9CJ5y6ZvlxsL4pN07lrBi1dvq9ZggZ/6LOq5ZWP.txt

●質問者: yoshifuku
●カテゴリ:コンピュータ
✍キーワード:Excel VBA まら オーバーフロー コマンドプロンプト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● naka1kazu
●1ポイント

私ならSEDもしくはGAWKを使用しますね。

http://www.nurs.or.jp/~sugi/sed.htm

http://www.lingua.tsukuba.ac.jp/~sugi/jgawk.html

FreeでGNUコマンドとして入手できるはずです。Windowsであれば

http://www.cygwin.com/

でまとめてUnix環境を導入してもOKです。


2 ● HALSPECIAL
●78ポイント ベストアンサー

WSH(VBScript)です。

こちらでいけないでしょうか?

メモ帳などのエディタに貼り付けて、※の部分を書き替え

ファイルの置換.vbs

のようなファイル名で保存します。(拡張子をvbsにする事)

ダブルクリックすると実行されます。


Option Explicit

Const TARGET_FOLDER = "D:\TEMP"  '※フォルダを指定
Const REPLACE_FROM = "置換前文字列" '※
Const REPLACE_TO = "置換後文字列" '※

Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)

Dim objFSO, objFolder, objFile, objSubFolder, objTXT
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(TARGET_FOLDER)

For Each objFile In objFolder.Files
 Dim strFilePath, infile, outfile, strData
 strFilePath = objFSO.BuildPath(TARGET_FOLDER, objFile.Name)
 Set infile = objFSO.OpenTextFile(strFilePath,ForReading)
 strData = infile.ReadAll
 infile.Close
 Set infile = Nothing
 Set outfile = objFSO.OpenTextFile(strFilePath,ForWriting)  '(上書き)
 outfile.Write Replace(strData,REPLACE_FROM,REPLACE_TO)
 outfile.Close
 Set outfile = Nothing
Next

Set objFolder = Nothing
Set objFSO = Nothing

MsgBox "終了", vbInformation

※ファイルの内容を書き換えるものですので、実行前に、あらかじめバックアップ等しておいてください。

◎質問者からの返答

完璧にできました!約4時間で完了できました!


3 ● tamo2_xvi
●1ポイント

http://hide.maruo.co.jp/software/hidemaru.html

秀丸エディッタのgrep機能で簡単に置換出来ると思います。

置換には正規表現もできますし、マクロを組む事も出来るので

おおよその事は可能だと思います。

シェアですが試用も出来ますので、お試しください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ