対象ディレクトリ内のファイルを行単位で読込み、置換を行います。
今回はテキストエリアの中身をCSVに出力したファイルの末尾が改行になっているものを
強制的に除去しているだけで、実際は置換していません。
対象の大量ファイルは「C:/replaceBefore」にあるとし、
置換後の大量ファイルを作成するために「C:/replaceAfter」を作成しておきます。
var fso = new ActiveXObject("Scripting.FileSystemObject"); var files = fso.GetFolder("D:/replaceBefore").Files; var e = new Enumerator(files); // ディレクトリ内の全てのファイル分繰り返す。 for ( ; !e.atEnd(); e.moveNext()) { var file = e.item(); var fileFullPathBefore = "D:/replaceBefore/" + file.Name; var fileFullPathAfter = "D:/replaceAfter/" + file.Name; WScript.Echo(fileFullPathBefore + "を処理します。"); // 入力ファイルの設定 // Typeの設定値 // 1:バイナリを表す。 // 2:既定値。charsetで指定した文字セットで文字列を表す。 var sr = new ActiveXObject("ADODB.Stream"); sr.Type = 2; sr.charset = "utf-8"; sr.Open(); sr.LoadFromFile(fileFullPathBefore); // 出力ファイルの設定 var sw = new ActiveXObject("ADODB.Stream"); sw.Type = 2; sw.charset = "utf-8"; sw.Open(); // 入力ファイルの読込み // 入力ファイルがEOSになるまで繰り返す。 while (!sr.EOS) { // ReadTextの第1引数 // -1:既定値。EOSマーカーに達するまですべてのバイトをストリームから読み取る。 // -2:改行までの行をストリームから読み取る。改行はLineSeparatorの設定値依存。 var temp = sr.ReadText(-2); // 置換文字列検索用 // RegExpの第2引数に'g'を指定すると全置換になる。 // var reg = new RegExp("[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]{7}"); // var reg = new RegExp("[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]{7}", 'g'); // temp = temp.replace(reg, ""); // 出力ファイルの書込み // WriteTextの第2引数 // ActiveXObjectのTypeが文字列(2)の場合に利用する。 // 0:既定値。文字列を書き込む。 // 1:文字列+改行を書き込む // 末尾の1文字を取得する。 var lastWord = temp.slice(-1); // 末尾がダブルクォートである場合 if (lastWord == "\"") { // WScript.Echo("ダブルクォート"); // 文字列+改行を書き込む。 sw.WriteText(temp, 1); // 末尾がダブルクォート以外である場合 } else { // WScript.Echo("違う"); // 文字列を書き込む。 sw.WriteText(temp, 0); } } // 書き込みの文字コードがUTF-8の場合、BOMが付与されるため、除去する。 // 書き込んだオブジェクトのポジションをゼロに戻し、 // バイナリモードを指定した上で、ポジションを3byte分ずらし、再書き込みする。 // この処理順序は変更不可。 if (sw.charset == "utf-8") { sw.Position = 0; sw.Type = 1; sw.Position = 3; var textBinary = sw.Read(); sw.Close(); sw.Type = 1; sw.Open(); sw.Write(textBinary); } sr.Close(); sr = null; // 出力ファイルの保存 // SaveToFileの第2引数 // 1:既定値。ファイルがない場合、新規作成する。ファイルがある場合、上書きしない。 // 2:ファイルがない場合、新規作成する。ファイルがある場合、上書きする。 sw.SaveToFile(fileFullPathAfter, 2); sw.Close(); sw = null; } fso = null;