WSHをVBScriptではなく、JScriptから利用することが多いです。
引数チェックやファイルからの読み込みなど、良く書く処理をこちらにメモ
メモ
({ // ファイルの内容を配列に格納して返却 // 引数1:ファイルパス // 返却値:ファイル内容のString型配列 fileToArray: function (filePath) { var IOMODE_FOR_READEING=1; var IOMODE_FOR_WRITING =2; var IOMODE_FOR_APPENDING=8; var TRISTATE_FALSE=0; // ASCII,既定 var TRISTATE_TRUE=-1; // Unicode var TRISTATE_USE_DEFAULT=-2; // システムデフォルト var fileArray = []; var fso = null; var textFile = null; try { fso = WScript.CreateObject("Scripting.FileSystemObject"); // 指定のファイルが存在しないときは新規作成しない textFile = fso.OpenTextFile(filePath,IOMODE_FOR_READEING,false,TRISTATE_USE_DEFAULT); while (!textFile.AtEndOfStream) { fileArray.push(textFile.ReadLine()); } } catch (err) { WScript.Echo(err.message); } finally { if (textFile != null) { textFile.Close(); } fso = null; } WScript.Echo("行数:" + fileArray.length); return fileArray; }, // 引数の数を満たしているか判定 // 引数1:引数の数 isArgsNumSatisfied: function (argsNum) { if (WScript.Arguments.length < argsNum) { return false; } return true; }, // 本スクリプトがクリック起動されたかどうかを判定 isClicked: function () { var WSCRIPT_EXE = "wscript.exe"; var scriptEnironment = new String(WScript.FullName); // 実行環境がwscript.exe だとクリック起動 // コマンドライン起動だとcscript.exe // 条件誤りを修正 // if (scriptEnironment.lastIndexOf(WSCRIPT_EXE) == -1) { if (scriptEnironment.lastIndexOf(WSCRIPT_EXE) > -1) { return true; } return false; }, main: function () { if (this.isClicked()) { WScript.Echo("クリックされました"); } var argsNum = 1; if (!this.isArgsNumSatisfied(argsNum)) { WScript.Echo("引数は" + argsNum + "つ入力してください"); } var filePath = WScript.Arguments(0); var fileArray = this.fileToArray(filePath); for (var i = 0; i < fileArray.length; i++) { WScript.Echo(fileArray[i]); } } }).main()
実行例
PS C:\Users\hoge\Documents\jscript\snippets> cscript //nologo .\snippets.js test.txt クリックされました 行数:6 a b c de f あ PS C:\Users\hoge\Documents\jscript\snippets>