JScript でテキストファイルの文字列を置換する
今回は、JScript を用いてテキストファイルの文字列を置換するスクリプトを作りました。
スクリプト
// FileName: replaceText.js var args = WScript.Arguments; if (args.Length < 3) { WScript.Echo('Usage: cscript replaceText.js 入力ファイル名 置換前テキスト 置換後テキスト'); WScript.Quit(1); } var srcfile = args(0); var srckwd = args(1); var dstkwd = args(2); var retcode = 0; var strm = null; var fso = new ActiveXObject('Scripting.FileSystemObject'); try { strm = fso.OpenTextFile(srcfile); } catch (e) { WScript.StdErr.WriteLine('Error: ' + e.description); WScript.Quit(e.number & 0xFFFF); } try { while (!strm.AtEndOfStream) { WScript.Echo(strm.ReadLine().replace(srckwd, dstkwd)); } } catch (e) { WScript.StdErr.WriteLine('Error: ' + e.description); retcode = e.number & 0xFFFF; } finally { strm.Close(); } strm = null; fso = null; WScript.Quit(retcode);
使い方
コマンドプロンプトで下記のように指定してください。
cscript replaceText.js 入力ファイル名 置換前テキスト 置換後テキスト
WSH のロゴを表示したくない場合は、下記のように指定してください。
cscript //NoLogo replaceText.js 入力ファイル名 置換前テキスト 置換後テキスト
実行例
下記のテキストファイルを入力とします。
C:\Windows\System32\drivers\1394bus.sys C:\Windows\System32\drivers\1394ohci.sys C:\Windows\System32\drivers\acpi.sys C:\Windows\System32\drivers\acpipmi.sys C:\Windows\System32\drivers\adp94xx.sys C:\Windows\System32\drivers\adpahci.sys C:\Windows\System32\drivers\adpu320.sys C:\Windows\System32\drivers\afd.sys C:\Windows\System32\drivers\agilevpn.sys C:\Windows\System32\drivers\AGP440.sys
「C:\Windows\System32」を「D:」に置き換えてみます。
実行すると置換済みのテキストが出力されます。
C:\>cscript //NoLogo replaceText.js input.txt C:\Windows\System32 D: D:\drivers\1394bus.sys D:\drivers\1394ohci.sys D:\drivers\acpi.sys D:\drivers\acpipmi.sys D:\drivers\adp94xx.sys D:\drivers\adpahci.sys D:\drivers\adpu320.sys D:\drivers\afd.sys D:\drivers\agilevpn.sys D:\drivers\AGP440.sys