----------------- [ Update 20090317 2113 ]
このログのスクリプトのアーカイブはコチラの版に差し替えました。通常のWindowsアプリケーションの挙動なら、その本体やショートカットを作成し、
対象ファイルをドロップすれば、ソースファイルのあるフォルダに結果を返してくれそうなものだが、
WindowsScriptEncoderは、そのままでは、長いファイル名に対応できてない上、書式がカナリ厄介。
書式)
"[インストール先]\screnc.exe" "対象ファイル.vbs" "エンコード後のファイル.vbe"
|
screnc.exe - エンコーダ本体 レジストリにも所在が登録されてない上、 Pathも通ってないので、起動の際は要フルパス記述。 ショートカット作成時には、作業フォルダにパスを指定しておいたほうが無難だ。
[インストール先フォルダ] 既定は "C:\Program Files\Windows Script Encoder\" だと思う、多分・・・ 少なくともウチの機器ではココだった。
{"対象ファイル.vbs"} 対象ソースとなるVBScriptファイルをフルパスで指定
{"エンコード後のファイル.vbe"} 任意のファイル名に拡張子.vbeを付けてフルパス指定
|
まず、エンコード後の名称を、フルパスで拡張子までキッチリ指定しないと正しく動作しないってのがヘン。
また、コンソールアプリなので、スペースを含んでいたり、長いファイル名は、
[ " ]ダブルクォーテーションで囲む必要がある。
このような仕様では、どうやったって、単純にショートカットを配し、ドロップして利用・・・ とはイかないワケだワ(´ヘ`;)
最終的に、内容がエンコードされて、拡張子が変わるだけでいいのに、何故こんな指定方法なのか・・・
(安易な不正アクセスを防ぐイミでは、有効かもしれないケド・・・)
結果のファイル名.vbeを、ソース.vbsと異なるようにしたい向きを除き、とてもユーザーフレンドリーとは云いがたい・・・
今回も使い方は、以下スクリプトをコピってテキストエディタに貼り、
VBSEncodeConnection.vbs として保存後、実行スクリプト保存フォルダを任意に作成し、ソコへ放り込んで、
ショートカットをデスクトップ他、使いやすい場所に配してください。
あとは、作成した.vbsファイルをまとめてドラッグするだけで利用できます。
エンコーダのインストール先は、スクリプト中の
Const Enc = "C:\Program Files\Windows Script Encoder\screnc.exe"
|
を書き換えれば、任意に変更可能です。
今回は、組み込み関数は一切ないデスw つか、要らないと云うほうが正しいカナ。
Dim Args, Wsh, Fs Set Args = WScript.Arguments If Args.Count <= 0 Then Wscript.Quit End If Set Wsh = WScript.CreateObject("WScript.Shell") Set Fs = WScript.CreateObject("Scripting.FileSystemObject") Dim vbSp, vbTc, vbCt, vbWt, vbTs, vbCs Dim tFile, Tf, Ef, Info, pTarget Const vbWq = """" Const Enc = "C:\Program Files\Windows Script Encoder\screnc.exe" vbSp = " " vbTc = vbTab & vbCrlf vbCt = vbCrlf & vbTab vbWt = vbWq & vbTab vbTs = String(2,vbTab) vbCs = String(2,vbCrLf) For iC = 0 To Args.count - 1 tFile = Args(iC) If Fs.FileExists(tFile) then Ext = Fs.GetExtensionName(tFile) If Lcase(Ext) = "vbs" Then Tf = vbWq & tFile & vbWq Ef = Replace(Tf,"." & Ext,".vbe") Info = "Before" & vbCrlf & vbSp & Tf & vbSp & vbCrlf & vbCrlf & _ "After" & vbCrlf & vbSp & Ef & vbSp & vbCrlf If Msgbox(Info, vbYesNo, "VBS Encode") = vbYes then pTarget = vbWq & Enc & vbWq & " " & Tf & " " & Ef Wsh.Run pTarget, 0 End If End If End If Next Set Args = Nothing Set Fs = Nothing Set Wsh = Nothing Wscript.Quit
|
ま、ソコはソレ、不便なら、問題を解消する策を講じられる位でないと、
MS製品なんて使ってられんと云うコトで・・・w
とは云え、今回は手順も面倒なので、ソースとエンコード済みのファイルをDL出来るようにしてみました、
▲ を、右クリックしてファイルとして保存してください。
----------------- [ Update 20090317 2113 ]
このアーカイブはコチラの版に差し替えました。今までのモノも、似た対応できたんだけど、面倒だったのでw
あと、セキュリティ的に、テキストのほうが安心できる人も多いかと思ったし・・・ (^_^;
ちなみに、エンコード後のファイルはバイナリ形式な上、既にヒトが読めるカタチになってません、
修正や改変は出来ないので、ソースは大事に保管してください。
また、エンコード後のファイル.vbeは、Web環境で利用する場合、
対応している対象がIEだけらしいとのレポートを読んだ記憶があります。(未確認、誤報なら嬉しいが・・・)
あくまで、ローカルでの運用に留めた方が無難かと思われます。
-----------
次回は、FileBackUpper.vbe辺りをソース込みで うp予定。
対象ファイルの名称を "[元FileName] yyyymmdd hhnnss.[拡張子]" に 変え、コピーを取るだけのモノ。
長いこと利用しているブツで、HTML/JavaScript/VBScript etc.. 版管理に威力を発揮している。
初期起動で、ファイル/フォルダ右クリックのコンテキストメニューに、
[バックアップ作成]を追加するようレジストリ設定を行える機能の追加版を用意する予定。
乞うご期待。
<そのまま使えるVBscript WindowsScriptEncoder 容易 使い方>