私と一緒にWindows JSスクリプトを書きます(一):Hello World


作成者:[email protected]新浪微博@孫雨潤新浪ブログCSDNブログ日付:2012年11月1日
1. Introduction to Windows JS
作業中に自動化ツールを書くことがよくありますが、スクリプトは最適な選択です.しかし、どのスクリプト言語を選択するかは常に頭を悩ませ、perl/pythonはまず文法を熟知してからライブラリを熟知する必要があり、batバッチの文法はもっと変態で時代遅れで、vbsはよくウイルスと見なされ、powershellは同様に文法とライブラリを学ぶ問題に直面し、同時に実行しなければならない.Netプラットフォームでは…文法を学ぶ必要がなく、オブジェクトを学ぶ必要がなく、追加のインストールを必要とせず、XPシステム以上でサポートされているスクリプト言語はありませんか.javascriptです.
1.1 Windows JSとは
よく知られているJSは最もポピュラーなスクリプト言語としてブラウザで実行され、ブラウザのJSは以下の2つのことをすることができます.
  • 呼び出しオブジェクトの属性メソッド
    window.location.assign("http://www.yy.com");
    
  • イベントに応答する
    <input type="text" id="email" onchange="checkEmail()">
    
  • これらの機能は実際にはブラウザが提供するものである:ブラウザのJS解釈器はJSコード解釈を実行し、いくつかの組み込みオブジェクトを提供し、イベント通知が必要なときにJS関数をコールバックする.当然,インタプリタ,オブジェクト,イベントコールバックを提供すれば,JSはブラウザ以外の場面で機能すると考えられる.例えばQtライブラリにおけるQtScriptは、従来のC++dll方式に代えるJSを用いてプラグインを開発するスクリプト実行環境である.
    サードパーティ製ライブラリQtに比べ、Windows 98からオペレーティングシステムの組み込みオブジェクトをスクリプト呼び出し、ファイルシステム、ネットワーク、I/Oなどを管理できる環境が用意されており、公式名はWSH(Windows Script Host)--Windowsスクリプトホストと呼ばれている.
    厳密に言えば、WSHは言語に関係のないスクリプトエンジンであり、COM/OLE技術を利用して言語に関係のないバイナリ互換性(公式名は自動化技術)を提供し、REXX、BASIC、Perl、Ruby、Tcl、PHP、JavaScript、Delphi、Python、XSLT、Powershellなど十数種類のスクリプトのサポートを実現した.
    1.2 Windows JSで何ができるか
  • 自動バッチ
  • ファイルシステムの管理:ディスク、ファイル、フォルダの作成、削除、アクセスなど;ファイル読み書き
  • 管理ネットワーク:socket接続、ftp、smtp、http
  • など
  • 管理I/O:標準入出力、ハードウェア機器
  • 制御デスクトップShell:ショートカット、デスクトップウィンドウ
  • 制御アプリケーション:word、excle、wmp、QQなどのオブジェクトを取得し、メソッド
  • を呼び出す.
    1.3 Windows JSの使用理由
  • スクリプトにより、生産性が大幅に向上
  • js言語の学習コストはほぼ0
  • である.
  • 開発プラグインは安全で安定しており、他のモジュール
  • に影響を与えない.
    2.開発、デバッグ、運転
    2.1開発
    もちろんどの言語でもNotepadで開発できますが、windowsの組み込みオブジェクトを大量に使用するため、さまざまなドキュメントを調べてオブジェクトが提供する方法の属性を明らかにするよりも、フレンドリーで便利なIDEを使用するほうがいいです.ここではベテランスクリプトIDEPrimalSCRIPTをお勧めします.ここを猛撃して試用版をダウンロードします.
    2.2デバッグ
  • コード量の少ないデバッグは万能方法を用いることができる:印刷出力
    WScript.Echo("The size of array = " + arr.length);
    
  • IDEのブレークポイント、watch機能の使用を推奨し、デバッグバグは
  • である.
    2.3運転
    ファイルjsは接尾辞名として、以下のいくつかの実行方法があります.
  • cmdコマンドラインに入り、
    WScript.exe test.js
    
  • と入力する.
  • はcmdコマンドラインに入り、入力
    CScript.exe test.js
    
    WscriptとCStripの違いは主に前者がUI方式で対話し、後者がコンソール入出力方式で対話することである.
  • マウスをダブルクリックします.jsファイル、デフォルトはWscript.Exce運転
  • IDEで実行、デフォルトはCScript.Exce運転
  • 3.実用機能優先体験
    次の節では、一般的なオブジェクトの実用性について詳しく説明します.
    3.1 Hello World
    作用:Hello Worldを出力する
    WScript.Echo("Hello World");
    

    保存するjsをダブルクリックします.MessageBoxにHello Worldと書かれているものがポップアップされます.IDEで実行すると、出力ボックスに「Hello World」文字列が表示されます.
    3.2デスクトップにショートカットを作成する
    役割:デスクトップにnotepadを作成します.exeのショートカット
    var sh = WScript.CreateObject("WScript.Shell"); 
    desktop = sh.SpecialFolders("Desktop"); 
    shortcut = sh.CreateShortcut(desktop + "\\       .lnk"); 
    shortcut.TargetPath = "c:\\Windows\
    otepad.exe"; shortcut.Save();

    3.3アプリケーションを開く
  • の役割:メモ帳を開き、すぐに後続のスクリプトを実行し、ボタン
    var sh = WScript.CreateObject("WScript.Shell"); 
    sh.Run("notepad " + WScript.ScriptFullName);
    WScript.Sleep(1000);
    sh.SendKeys("what the hell are you doing?");
    
  • をシミュレートします.
  • の役割:メモ帳を開き、メモ帳が閉じるのを待ってから後続スクリプト
    var sh = WScript.CreateObject("WScript.Shell"); 
    sh.Run("notepad " + WScript.ScriptFullName, 1, true); 
    sh.Popup("        !");
    
  • を実行します.
  • 作用:QQを開いてリターンキーをシミュレートして自動的に登録する(ユーザー名のパスワードが保存されている場合)
    var sh = WScript.CreateObject("WScript.Shell"); 
    try {
        WScript.Echo("launch qq...");
        var path = "\"D:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe\"";
        sh.Run(path); 
        sh.SendKeys("{ENTER}");
    } catch(e) {
        WScript.Echo(e);
    }
    
  • 3.4ファイルシステムへのアクセス
  • 機能:デスクトップのすべてのファイル名
    var fso = WScript.CreateObject("Scripting.FileSystemObject"); 
    var dir="C:\\Users\\Administrator\\Desktop"; 
    var fsofolder = fso.GetFolder(dir); 
    var colFiles = fsofolder.Files; 
    var fc = new Enumerator( colFiles ); 
    WScript.Echo("Files under \""+dir+"\":"); 
    for (; !fc.atEnd(); fc.moveNext() ){ 
        WScript.Echo(fc.item()); 
    } 
    
  • を出力
  • 機能:ディスク関連属性
    var fso = WScript.CreateObject("Scripting.FileSystemObject"); 
    var driveTypeNames=["    ", "     ", "  ", "       ", "  ", "    "]; 
    var e = new Enumerator(fso.Drives); 
    var s = ""; 
    for (; !e.atEnd(); e.moveNext()) { 
        x = e.item(); 
        WScript.Echo(x.DriveLetter+":") 
        WScript.Echo("     :" + x.DriveType + " (" + driveTypeNames[x.DriveType] + ")"); 
        WScript.Echo("     :" + x.ShareName); 
        WScript.Echo("       :" + x.IsReady); 
        if (x.IsReady){ 
            WScript.Echo("   :" + x.VolumeName); 
            WScript.Echo("     :" + x.AvailableSpace + "  "); 
        } 
    } 
    
  • がリストされます.
  • 役割:ファイル詳細
    var fileName = WScript.ScriptFullName; 
    var fso = WScript.CreateObject("Scripting.FileSystemObject"); 
    var f = fso.GetFile(fileName);  
    var fileinfo = "Results for " + fileName + "
    "; fileinfo += " :" + f.Name + "
    "; fileinfo += " :" + f.Attributes + "
    "; fileinfo += " :" + f.Size + " Bytes
    "; fileinfo += " :" + f.DateCreated + "
    "; fileinfo += " :" + f.DateLastAccessed + "
    "; fileinfo += " :" + f.DateLastModified + "
    "; fileinfo += " :" + f.Drive + "
    "; fileinfo += " :" + f.Type + "
    "; WScript.Echo(fileinfo);
  • を取得する.
    3.5時間関数
    ≪アクション|Action|ldap≫:現在の時刻を表示します.
    var today = new Date(); 
    WScript.Echo("   :"+today.toLocaleString()); 
    

    3.6環境変数
    ≪アクション|Action|emdw≫:OS環境変数のリスト
    var sh = WScript.CreateObject("WScript.Shell"); 
    var envObj = sh.Environment("SYSTEM"); 
    
    WScript.Echo("======            :======"); 
    WScript.Echo("No. of env. variables = "+envObj.length); 
    var it = new Enumerator(envObj) 
    for (it.moveFirst(); !it.atEnd(); it.moveNext()) {
        WScript.Echo(it.item()+" ===> "+envObj(it.item())); 
    }
    

    3.7ネットワーク関連
    役割:Webページをキャプチャしてファイルに保存する
    var http = WScript.CreateObject("WinHttp.WinHttpRequest.5.1");
    http.Option(4) = 13056;
    http.Option(6) = false;
    
    http.Open("GET", "http://www.baidu.com/", false);
    http.SetRequestHeader("Accept", "*/*");
    http.SetRequestHeader("Accept-Language", "zh-cn,zh");
    http.SetRequestHeader("User-Agent", "Mozilla/6.0");
    http.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    http.SetRequestHeader("Referer", "http://www.baidu.com/");
    http.SetRequestHeader("Connection", "Close ");
    http.SetRequestHeader("Content-Length", "100");
    
    http.Send();
    http.WaitForResponse(1000);
    WScript.Echo(http.ResponseText);
    
    var fs = WScript.CreateObject("Scripting.FileSystemObject");
    var file = fs.CreateTextFile("output.html", true);
    file.Write(http.ResponseText);
    

    3.8 COM/OLEコントロールを呼び出す
    役割:WMPlayerコントロールにアクセスして音楽を再生する
    var wmp = WScript.CreateObject("WMPlayer.OCX");
    wmp.URL = "E:\\360  \\music\\  -    \\   .mp3";
    WScript.Sleep(2000);
    WScript.Sleep(wmp.currentMedia.duration * 1000);
    WScript.Quit();
    
  • もしこの文章があなたに役に立つならば、CSDNブログに伝言を残してください.
  • 転載ご明記ください:雨潤からの技術ブログhttp://blog.csdn.net/sunyurun