Skip to main content

windows script host by jscript

スクリプトの呼び出し。 アイコンのダブルクリックや、アイコンへのドラッグ&ドロップでも起動できる。

cscript script.js //Nologo
wscript script.js //Nologo

メッセージの表示。cscript ... で実行するとターミナルに表示される。

WScript.Echo( "メッセージ" + foo);

バッチファイルを呼び出す

var openssl     = "C:\\Users\\public\\Documents\\bin\\openssl.exe";
var shell   = WScript.CreateObject("WScript.Shell");

try {
  oExec = shell.Exec( openssl + " version" );
  //oExec = shell.Exec( openssl + " --help" );
  while ( ! oExec.StdOut.AtEndOfStream ) {
    WScript.Echo(oExec.StdOut.readline());
  }
  while ( ! oExec.StdErr.AtEndOfStream ) {
    WScript.Echo(oExec.StdErr.readline());
  }
}
catch (e){ 
  WScript.Echo(e)
}

引数のぶんだけ繰り返して実行する

var objArgs = WScript.Arguments;
var fso     = new ActiveXObject("Scripting.FileSystemObject");
var file;

for (i = 0; i < objArgs.length; i++) {
  try {
    file = fso.GetFile( objArgs(i) );
    fin = fso.OpenTextFile(file, 1, false);
    while ( ! fin.AtEndOfStream ) {
      line = fin.readline();
      WScript.Echo(line);
    }
    fin.Close();
  }
  catch (e) {
    WScript.Echo(e);
  }
}

ファイルを開き一行ずつ読み込んで処理。

var objArgs = WScript.Arguments;
var fso     = new ActiveXObject("Scripting.FileSystemObject");
var file;
var fin;

for (i = 0; i < objArgs.length; i++) {
  try {
    file = fso.GetFile( objArgs(i) );
  }
  catch(e) {
    WScript.Echo(e);
    continue;
  }
  fin = fso.OpenTextFile(file, 1, false);
  while ( ! fin.AtEndOfStream ) {
      line = fin.readline();
      WScript.Echo(line);
  }
  fin.Close();
}

アクセスファイルを開き、マクロを呼び出す。

var dbfile='C:\\Users\\public\\Documents\\Database1.accdb';
var timeout = 500; // milliseconds
try {
  var AccessApp = new ActiveXObject( "Access.Application" );
  // AccessApp.Visible = true;
  WScript.Sleep( timeout );

  try {
    AccessApp.OpenCurrentDatabase( dbfile );
    WScript.Sleep( timeout );
    // マクロを実行する例
    // AccessApp.DoCmd.RunMacro( "マクロ名" );
  }
  catch(e) {
    WScript.Echo(e);
  }
  finally {
    AccessApp.CloseCurrentDatabase();
  }
}
catch(e) {
    WScript.Echo(e);
}
finally {
  AccessApp.Quit();
  AccessApp = null;
}

excel

var excelfile = "c:\\users\\public\\documents\\test.xlsm"
var updatelinks = true;
var readonly = true;

try {
  var ExcelApp = new ActiveXObject("Excel.Application");
  // ExcelApp.Visible = true;
  // ExcelApp.DisplayAlerts = true;

  try {
    // var book = ExcelApp.Workbooks.Open(excelfile);
    var book = ExcelApp.Workbooks.Open(excelfile, updatelinks, readonly);
    // マクロを実行する例
    ExcelApp.Run("マクロ名")

    // シートに記入して保存する例
    // var sheet = book.sheets(1);
    // sheet.Cells(2, 1).value = "message...";
    // book.Save();
  }
  catch(e) {
    WScript.Echo(e)
  }
  finally {
    book.Close();
  }
}
catch(e) {
  WScript.Echo(e)
}
finally {
  ExcelApp.Quit();
}