JScript版のWSHがなかなか出てこないのでよく使うファイル操作系をメモ
・ファイル読み込み
/// filename:ファイルパス
/// isArray:booleanで戻り値を配列にするか文字列にするか
function readFile (filename, isArray)
{
var file = new ActiveXObject ("ADODB.Stream");
file.Type = 2; // テキストモード 1:バイナリデータ
file.charset = "UTF-8";
file.LineSeparator = -1; // CRLF 13:CR 10:LF
file.Open ();
try {
file.loadFromFile (filename);
} catch (e) {
WScript.echo ("エラー");
WScript.Quit (-1);
}
var reader = null;
if (isArray) {
reader = [];
while (!file.EOS)
reader.push (file.ReadText (-2)); // 行単位
} else
reader = file.ReadText (-1); // 全部
file.Close ();
return reader;
}・書き込み
/// filename:ファイルパス
/// value:書き込む文字列
/// isOver:上書きするかどうか
function writeFile (filename, value, isOver)
{
var fs = new ActiveXObject("Scripting.FileSystemObject");
var file = new ActiveXObject ("ADODB.Stream");
file.Type = 2; // テキストモード 1:バイナリデータ
file.charset = "UTF-8";
file.LineSeparator = -1; // CRLF 13:CR 10:LF
file.Open ();
// 追記
if (isOver) {
is (fs.FileExists (filename)) {
file.LoadFromFile (filename);
file.Position = file.Size;
}
}
// 改行ありで書き込み
file.WriteText (value, 1); // 0:改行なし
// 上書き
file.saveToFile (filename. 2);
file.close ();
}・おまけ(VSでのデバッグ用のバッチ)
CSCRIPT //X XXXXXXXX.js
バッチ処理でSQLを読み込んだり、CSVファイルを読み込んだりだとかいろんな場面で使う読み込みと、ログ出力すると考えるとかならず使う書き込み処理でした。
毎回、引数を改造したりちょろちょろといじって使うので、最低限の処理です。


コメント