ラベル Windows Scripting Host の投稿を表示しています。 すべての投稿を表示
ラベル Windows Scripting Host の投稿を表示しています。 すべての投稿を表示

2013年10月1日火曜日

JScript UTF-8のファイル読み込み

WSHでは通常ファイルを読み込むときに、
FileSystemObjectをnewしてEOFまでファイルを読むというスタイルを取る。
しかしこれはファイルのエンコード形式がShift-JISに限定されている。
 
var fso      = new ActiveXObject('Scripting.FileSystemObject'); 
while(textStream.AtEndOfLine == false){ 
   //your code 
}  


UTF-8など他のエンコード形式の場合は、ADOを利用する。


var fso      = new ActiveXObject('ADODB.Stream');
fso.type = 2;
fso.charset = 'utf-8';
fso.open();
fso.loadFromFile( filePath );
while(!fso.EOS){
     //your code
}  
fso.close();

サンプルコードは以下のサイトへ。
https://github.com/maar4569/Tips/blob/master/fileReader.js

2013年9月30日月曜日

WSH 名前付き引数の使い方

Windows系の仕事をしていると、ちょっとした事をスクリプトで処理するときにWSHを
使う。
 
使ってないと忘れるのでコードのサンプルを書いとく。
 
内容は「test」スクリプトに渡す引数「logname」「out」が
いずれも未定義か、いずれか未定義の場合異常終了とする。
 
 
<package>
  <job id="test">
  <runtime>
    <named name="logName"helpstring="ログ名"type="string"required="true" />
    <named name="out"helpstring="出力ファイル名"type="string"required="true" />
  </runtime>
  <script language="JScript">
   var namedArgs = WScript.Arguments.Named;
       //引数が無い、またはout,logNameいずれかが無い場合、異常終了
   if (namedArgs.length == 0 || !namedArgs.exists("out") || !namedArgs.exists("logName")) {
     WScript.Arguments.ShowUsage();
     WScript.Quit(1);
   }
   if(namedArgs("logName") != undefined){ WScript.echo('logName->' + namedArgs("logName") );
   if(namedArgs("out") != undefined){ WScript.echo('out->' + namedArgs("out") ); </job>
</package>