2009/03/17

VBScriptでWSE そにょ2・・・


WindowsScriptEncoderを便利に・・・のスクリプト、更新しました。
アーカイブも差し替えました。

・jsファイルのエンコードにも対応させました。
・変換済みファイルが既存の場合、Renameして保護した後、新規にエンコードファイルを作成します。
 それに伴い、変換実行承認画面は廃しました。
・全体の実行開始確認と、終了報告メッセージを追加し、大量変換や操作ミス回避等にも対応させました。

なにぶん当然過ぎたので、結構肝心な説明と思わしきコトが抜けてたんだけど、
WindowsScriptEncoderは、アーカイブに含めるコトができません。
自身で、MSサイトからゲトしてください。 Windows使ってれば無料だし・・・

   VBSEncodeConnection.zip    
▲ を、右クリックしてファイルとして保存してください。

    '***** ↓↓↓ScriptTitle↓↓↓ *********************************************************     
'VBSEncodeConnection
'- Created by LazwardFox -

'パラメータ指定、ないし、vbs/jsファイルドロップで、
'同一フォルダ上にエンコード済みファイル(.vbe/.jse)を作成する。
'このスクリプトのショートカットに対してドロップしても有効。
'テキストエディタなどのマクロに登録しての利用も可

'単独起動 - 無効

' Update 20090317 2103 ScriptEncodeConnection完成までの暫定版として仕上げ
' Update 20090317 1822 JavaScriptへの対応、
' オートバックアップ機能追加(確認画面廃止)
' Update 20090309 1901 発行向けに調整
' Update 20090210 0109
' Release 20050112 1213
' DevStart 20050111 2117

'***** ↓↓↓ ObjectDecralations ↓↓↓ *************************************************
Dim Args, Wsh, Fs

Set Args = WScript.Arguments 'パラメーター取得
If Args.Count <= 0 Then
Set Args = Nothing
Wscript.Quit
End If
Set Wsh = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル操作

'***** ↓↓↓Decralations↓↓↓ *********************************************************
Dim sTitle, vbSp, vbTc, vbCt, vbWt, vbTs, vbCs
Dim tFile, bE, bF, tR, rE, sF, cF, rF, oF, pTarget

Const vbWq = """"
Const Enc = "C:\Program Files\Windows Script Encoder\screnc.exe"
sTitle = Fs.GetBaseName(Wscript.ScriptName)
Start = Wsh.PopUp("ConvertStart?",15,sTitle,33)
If Start = -1 Or Start = 2 Then
Set Args = Nothing
Set Fs = Nothing
Set Wsh = Nothing
Wscript.Quit
End If

vbSp = " "
vbTc = vbTab & vbCrlf
vbCt = vbCrlf & vbTab
vbWt = vbWq & vbTab
vbTs = String(2,vbTab)
vbCs = String(2,vbCrLf)

'nDT = iDT(""," ","",0)

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
For iC = 0 To Args.count - 1
tFiles = Args(iC)
If Fs.FileExists(tFiles) then
bE = Lcase(Fs.GetExtensionName(tFiles))
If bE = "vbs" Or bE = "js" Then
bF = Fs.GetBaseName(tFiles) 'NameOnly
tR = Fs.GetParentFolderName(tFiles) 'RoorFolder
rE = "." & Left(bE,2) & "e" 'NewExt
sF = vbWq & tFiles & vbWq 'vbs/js
cF = Fs.BuildPath(tR,bF & rE) 'vbe/jse
If Fs.FileExists(cF) Then
rF = bF & " " & iDT(""," ","",0) & rE
'rF = bF & " " & nDT & rE
Set oF = Fs.GetFile(cF)
oF.Name = rF
Set oF = Nothing
End If
pTarget = vbWq & Enc & vbWq & " " & sF & " " & vbWq & cF & vbWq
Wsh.Run pTarget, 0
End If
End If
Next
Set Args = Nothing
Set Fs = Nothing
Wsh.PopUp "Encoded",5,sTitle
Set Wsh = Nothing
Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'iDT - 日時文字列 ないし 日/時配列取得 for VBScript
'- Created by LazwardFox -

' Update 20090228 0458 変数宣言変更
' Update 20090223 0959 時刻桁処理変更
' Update 20090223 0253 Len記述忘れ修正
' Update 20090223 0135 変数宣言忘れ修正
' Update 20090210 0218
' Update 20090210 0115
' Release 20090209 2035

' iDT (
' dSplitter - DateSplitString (Normal - "/")
' ,dtSeparater - Date/Time SepaleteString (Normal - " ")
' ,tSplitter - TimeSplitString (Normal - ":")
' ,Control - 配列化 0 or 1 (Default - 1)
' )

Public Function iDT(dSplitter,dtSeparater,tSplitter,Control)
Dim nX, nD, nS, strHMS, sResult 'Update 20090228 0458
nX = Now()
nD = FormatDateTime(Date(),0)
nS = ":" & Split(CStr(FormatDateTime(nX,3)),":")(2) 'Update 20090223 0951
strHMS = FormatDateTime(nX,4) & nS 'Update 20090223 0951
If tSplitter = ":" Then
Else
strHMS = Replace(strHMS,":",tSplitter)
End If
sResult = Cstr(Replace(nD,"/",dSplitter)) & "*" & strHMS
If Control = 1 Then
iDT = Split(sResult,"*")
Else
iDT = Replace(sResult,"*",dtSeparater)
End If
End Function
<そのまま使えるVBscript WindowsScriptEncoder 容易 使い方>

0 件のコメント:

コメントを投稿