2009/03/19

VBScriptでラクをする そにょ2b・・・


Script to HTML 改訂しました。

   s2Hcnv.zip    
▲ を、右クリックしてファイルとして保存してください。
以前のログのアーカイブも、コチラの版に更新しています。
ただ、サイト上のテキストソースはそのままなので、旧版が欲しい場合は、そっちからコピペして使ってください。

仕上がりをスグにみたいのに、以前の版では HTMLとして最低限の記述すら追記しない為、
ブログに貼るか、Head情報を追記するかしないと、確認できなかったので、
今回は、それらを追記するよう応急処置を施し、
出力ファイルを、ブラウザでそのまま検証できるようにしました。

    '***** ↓↓↓ScriptTitle↓↓↓ *********************************************************     
' Script to HTML Converter
'- Created by LazwardFox -

' スクリプト(VBS/JS)/ini/テキストファイル中の、
' [Tab]を4つのスペースに置き換える / コメントに書式を充てる
' ▼
' HTMLファイルを作成後、エディタで開く。

' Update 20090318 2125 Hedderほか、HTML最低限の記述出力を追加
' 出力ファイルをブラウザで確認できるように・・・
' Update 20090317 1424 font設定が正しく適用されないBlogger対策
' Update 20090317 1311 JavaScript→HTML変換に対応
' Update 20090317 0928 コメント処理修正
' Update 20090317 0201 Tab to 4 Space Converter から名称変更
' Update 20090317 0201 本文中の"'"を無視するよう変更
' Update 20090317 0146 Headder/Footerを追記し、
' コメント部分に書式を割り当てる処理を追加。
' Update 20090315 2053
' Release 20090313 1855 発行
' DevStart 20090313 1736

'***** ↓↓↓ ObjectDecralations ↓↓↓ *************************************************
Dim Parameters, WSHShell, Fs

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

'***** ↓↓↓Decralations↓↓↓ *********************************************************
Const vbWq = """"
Dim vbSp, vbTc, vbCt, vbWt, vbTs, vbCs
Dim sDt, iC, nS, rF, tN, tE, tSep, sF, tFile, sFile, rFile
Dim sHs, sHe, sTops, sHeadders, sUnders
Dim hColor, fColor, rL,ltc, sltc, fQp, iQp, isQp, isQpc, lrL, nrL, rrL, wL

vbSp = " "
vbTc = vbTab & vbCrlf
vbCt = vbCrLf & vbTab
vbWt = vbWq & vbTab
vbTs = String(2,vbTab)
vbCts = vbCrLf & vbTs
vbCs = String(2,vbCrLf)
ltc = Split("&,l,t,;",",")
sltc = Join(ltc,"")

sHs = "<html>" & vbCt & "<head>" & vbCts & "<link rel=" & vbWq & "stylesheet" & vbWq & " type=" & vbWq & "text/css" & vbWq & " href=" & vbWq & "http://www.okitsunesama.com/Okitsunesama.css" & vbWq & ">" & vbCts & "<!-- <link rel=" & vbWq & "stylesheet" & vbWq & " type=" & vbWq & "text/css" & vbWq & " href=" & vbWq & "OkitsunesamaLabo.css" & vbWq & "> -->" & vbCts & "<title>おきつねさまのろぐてすと "
sHe = "</title>" & vbCt & "</head>" & vbCt & "<body class=" & vbWq & "CatalogView" & vbWq & ">" & vbCrLf
sTops = vbCrLf & "<table class=" & vbWq & "ScriptExp" & vbWq & "><tr class=" & vbWq & "ScriptExp" & vbWq & "><td><pre>"
sUnders = "</pre></td></tr></table>" & vbCrLf & vbCt & "</body>" & vbCrLf & "</html>"

hColor = "<a class=" & vbWq & "ScriptComments" & vbWq & "><font color=" & vbWq & "#ffffff" & vbWq & ">"
fColor = "</Font></a>"

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
For iC = 0 To Parameters.count - 1
tFile = Parameters(iC)
If Fs.FileExists(tFile) then
sDt = iDT(""," ","",0)
nS = Fs.GetFile(tFile).size
If nS < 1 Then
Else
tE = Ucase(Fs.GetExtensionName(tFile))
If tE = "VBS" or tE = "TXT" or tE = "INI" or tE = "JS" Then ' or tE = "HTML" or tE = "HTM" then
If tE = "JS" Then
tSep = "//"
'ElseIf tE = "HTML" or tE = "HTM" Then
Else
tSep = "'"
End If
rF = Fs.GetParentFolderName(tFile)
tN = Fs.GetBaseName(tFile)
sF = Fs.BuildPath(rF,tN & " t2H " & sDt & ".html")
sHeadders = sHs & tn & "." & Lcase(tE) & sHe & sTops
Set sFile = Fs.OpenTextFile(tFile,1) 'Sourceファイルを読み取りモードで開く
Set rFile = Fs.CreateTextFile(sF,0) 'Resultファイルを追記モードで開く
WScript.Sleep 200
Do Until sFile.AtEndOfStream
rL = sFile.ReadLine '行読み込み
rL = Replace(rL,"<",sltc) '不等号 < を HTMLコードに置き換え
fQp = InStr(1,rL,tSep) '最左クォーテーション(以後q)位置
iQp = 0
isQp= 1
isQpc = 1
If fQp > 0 Then '行内のq有
If fQp = 1 Then '行頭にq
rL = hColor & rL & fColor
Else '行頭以外にq
Do
iQp = InStr(isQp + 1,rL,tSep)
isQp = InStr(isQpc + 1,rL,vbWq & tSep & vbWq) + 1 '文字列表記のq有無
If isQp = 0 Then
Exit Do
End If
isQpc = isQp
Loop While iQp = isQp
If iQp > 0 Then
lrL = Left(rL,iQp - 1)
nrL = Len(rL) - iQp
rrL = Right(rL,nrL + 1)
rL = lrL & hColor & rrL & fColor
End If
End If
End If
If sHeadders <> "" And rL = "" Then
Else
wL = sHeadders & " " & Replace(rL,vbTab,vbSp) & " "
rFile.WriteLine wL
sHeadders = ""
End If
Loop
rFile.WriteLine sUnders
WScript.Sleep 200
sFile.Close 'Sourceファイルを閉じる
rFile.Close 'Resultファイルを閉じる
TextViewer tTV
If tTV = "NotSetting" Then
MsgBox "Converted",vbYesNo,"Script to HTML Converter"
Else
WSHShell.Run tTV & vbWq & sF & vbWq, 1
Wscript.Sleep 1000
End If
End If
End If
End If
Next
Set Parameters = Nothing
Set Fs = Nothing
Set WSHShell = Nothing
Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'TextViwer - テキストファイルを開く既定アプリケーションをフルパスで返します。
'- Created by LazwardFox -

' Release 20090315 2053
' DevStart 20090315 0938

Function TextViewer(ResultKey)
Dim sTV
Const RegKey = "HKCR\txtfile\shell\open\command\"
sTV = WSHShell.RegRead(RegKey)
sTV = Replace(sTV, " " & vbWq & "%1" & vbWq, "")
If Fs.FileExists(sTV) Then
ResultKey = sTv & " "
Else
ResultKey = "NotSetting"
End If
End Function

'------------------------------------
'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


また、今、コレとは別に、HTMLファイルで JavaScript/VBScript混在ソースを、同様に処理でき、
Hedder/Footer/コメント書式をiniファイルから取得するよう、更なる改訂を行っています。
<そのまま使えるVBscript VBScript JavaScript Tab 注釈 HTML 変換>

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 容易 使い方>

やってもうた & しんどい・・・


結局、ココにうpしたブツの体裁整えるのに、連続15時間以上費やしてしまった・・・
もう、背中がイタい^_^;

・・・先の追加分スクリプトをうp向けに修正して、ソレで古いものを見やすく変換したアト 対象を差し替え、
更にコメ書式充て機能付けたので、また変換して差し替えて、途中、貼り先間違えたり・・・
ソレを直したと、思ったら、今度はBloggerのヘンなクセに振り回され再修正・・・
また再度全てを差し替える・・・

つか先日、コメント書式充て機能が付く前のブツで変換したモノも、
差し替えたときに、貼り付け先間違えてて、今朝まで そのままになってたし~m(_ _)m

んで、ようやっと整った次第・・・
まぁ今後は、スクリプトモノのうpは楽になるワナ^_^;

VBScriptでラクをする そにょ2・・・


VB/JavaScript作成は、フリーのテキストエディタ VxEditorを利用させてもらっている。
拡張子毎に、表示条件を設定できるのも便利だ。
ちなみに当方のVBScript向け設定は、以下アーカイブ内のファイルで再現できる。

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


また、記述の際、自分で処理を追いやすくする為、Tabを結構多用する。コメントもまた然りだ。
それらをVXの見た目のまま サイトうpするのには、手作業では結構手間だ。

そもそもBloggerでは、Tabがスペースに置換されてしまうし、
ああいったコードを使うのは、閲覧者サイドの環境にも依存してしまう・・・

で、少し前に、Tabを4つのスペースに置き換えるだけのスクリプトを組んだ。
ドロップすれば、日時付きファイル名で、処理済ファイルが出来た。

だが、コメント部分に書式を割り当てたいと欲が出た。
しかし、これも手作業では結構難だ・・・

そこで、今しがた、前述のスクリプトを改良して出来上がったのが、
   s2Hcnv.zip    
▲ を、右クリックしてファイルとして保存してください。

実のトコ、デバッグ中に、思わぬ難があった。
まず、' クォーテーション、VBScriptでのコメントを表すアレだ。
コイシをInStrで単純走査した結果で書式充てを処理したら、
実行処理内の文字列としてのクォーテーション"'"でまで、コメント向け書式を充ててしまう結果に・・・(-_-;)
結局Do~Loopで、' と "'" を探す処理を繰り返して、差異を検知して回避した。

次に変換ソース、スクリプトを主にターゲットとして作成したとは云え、
文字列としてHTMLタグが入る可能性は大きい、つか、今回のモノがそうだった・・・(´ヘ`;)
で、試行錯誤の後、対策として、< を HTMLコードに置換するように変えてみた・・・ 一見スゴく良かったのだが、
逆に、このHTMLコード自体を、そのままの見た目で必要とする部分に表記できない と云うジレンマが・・・(゚Д゚;)

今回は、このスクリプト自身も完全に変換できるようにしたいっっ! と、云うコトで、
少し無駄だが、変数宣言部に
    ltc = Split("&,l,t,;",",")     
sltc = Join(ltc,"")
を、追加して対応、目的達成と相成った。

また、このスクリプトを利用して作成されたテキストを利用する際には、
対象となるサイトに、以下のようなスタイルシートの記述が必要になる。
(様式は任意で変更してもらってイイと思う)
    <style type="text/css">     

.ScriptExp
{
background-color: #FFFFFF;
border: 0;
align: center;
color: #1e50a2;
line-height: 100%;
}
.ScriptComments
{
font-weight: normal;
color: #FFFFFF;
background-color: #288285;
border: 0;
}

</style>



今回も、既出でない関数を追加した
レジストリから、既定のテキストエディタのパスを取得するだけのモノ・・・
    '------------------------------------     
'TextViwer - テキストファイルを開く既定アプリケーションをフルパスで返します。
'- Created by LazwardFox -

' Release 20090315 2053
' DevStart 20090315 0938

TextViewer(
ResultKey 既定のテキストエディタのパスをレジストリより取得し返します。
任意の変数を割り当ててください。
)

確かに、こんな面倒な手順を踏まなくとも、rundll32 url.dll で、処理すれば、
適切なアプリケーションで勝手に開いてくれるのだが、前ログのフォルダの例も含め、
通常開くアプリケーションを変更している向きには、意外に使いが悪い場合もあったり、
その逆もまた然り だったりで、こういう処理方法のほうが適切な場合が多い。
なので少し面倒だが、レジストリから読み出すことにした。

と、前置きが長かったが、本体ソースは以下参照。今まで通り アーカイブのvbsファイルの内容そのもの。
    '***** ↓↓↓ScriptTitle↓↓↓ *********************************************************     
' Script to HTML Converter
'- Created by LazwardFox -

' スクリプト(VBS/JS)/ini/テキストファイル中の、
' [Tab]を4つのスペースに置き換える / コメントに書式を充てる
' ▼
' HTMLファイルを作成後、エディタで開く。

' Update 20090317 1424 font設定が正しく適用されないBlogger対策
' Update 20090317 1311 JavaScript→HTML変換に対応
' Update 20090317 0928 コメント処理修正
' Update 20090317 0201 Tab to 4 Space Converter から名称変更
' Update 20090317 0201 本文中の"'"を無視するよう変更
' Update 20090317 0146 Headder/Footerを追記し、
' コメント部分に書式を割り当てる処理を追加。
' Update 20090315 2053
' Release 20090313 1855 発行
' DevStart 20090313 1736

'***** ↓↓↓ ObjectDecralations ↓↓↓ *************************************************
Dim Parameters, WSHShell, Fs

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

'***** ↓↓↓Decralations↓↓↓ *********************************************************
Const vbWq = """"
Dim vbSp, vbTc, vbCt, vbWt, vbTs, vbCs
Dim sDt, iC, nS, rF, tN, tE, tSep, sF, tFile, sFile, rFile
Dim sHeadder, sFooter, hColor, fColor, rL,ltc, sltc, fQp, iQp, isQp, isQpc, lrL, nrL, rrL, wL

vbSp = " "
vbTc = vbTab & vbCrlf
vbCt = vbCrlf & vbTab
vbWt = vbWq & vbTab
vbTs = String(2,vbTab)
vbCs = String(2,vbCrLf)
ltc = Split("&,l,t,;",",")
sltc = Join(ltc,"")
sHeadder = "<table class=" & vbWq & "ScriptExp" & vbWq & "><tr class=" & vbWq & "ScriptExp" & vbWq & "><td><pre>"
sFooter = "</pre></td></tr></table>"
hColor = "<a class=" & vbWq & "ScriptComments" & vbWq & "><font color=" & vbWq & "#ffffff" & vbWq & ">"
fColor = "</Font></a>"

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
For iC = 0 To Parameters.count - 1
tFile = Parameters(iC)
If Fs.FileExists(tFile) then
sDt = iDT(""," ","",0)
nS = Fs.GetFile(tFile).size
If nS < 1 Then
Else
tE = Ucase(Fs.GetExtensionName(tFile))
If tE = "VBS" or tE = "TXT" or tE = "INI" or tE = "JS" then
If tE = "JS" Then
tSep = "//"
Else
tSep = "'"
End If
rF = Fs.GetParentFolderName(tFile)
tN = Fs.GetBaseName(tFile)
sF = Fs.BuildPath(rF,tN & " t2H " & sDt & ".html")
Set sFile = Fs.OpenTextFile(tFile,1) 'Sourceファイルを読み取りモードで開く
Set rFile = Fs.CreateTextFile(sF,0) 'Resultファイルを追記モードで開く
WScript.Sleep 200
Do Until sFile.AtEndOfStream
rL = sFile.ReadLine '行読み込み
rL = Replace(rL,"<",sltc) '不等号 < を HTMLコードに置き換え
fQp = InStr(1,rL,tSep) '最左クォーテーション(以後q)位置
iQp = 0
isQp= 1
isQpc = 1
If fQp > 0 Then '行内のq有
If fQp = 1 Then '行頭にq
rL = hColor & rL & fColor
Else '行頭以外にq
Do
iQp = InStr(isQp + 1,rL,tSep)
isQp = InStr(isQpc + 1,rL,vbWq & tSep & vbWq) + 1 '文字列表記のq有無
If isQp = 0 Then
Exit Do
End If
isQpc = isQp
Loop While iQp = isQp
If iQp > 0 Then
lrL = Left(rL,iQp - 1)
nrL = Len(rL) - iQp
rrL = Right(rL,nrL + 1)
rL = lrL & hColor & rrL & fColor
End If
End If
End If
If sHeadder <> "" And rL = "" Then
Else
wL = sHeadder & " " & Replace(rL,vbTab,vbSp) & " "
rFile.WriteLine wL
sHeadder = ""
End If
Loop
rFile.WriteLine sFooter
WScript.Sleep 200
sFile.Close 'Sourceファイルを閉じる
rFile.Close 'Resultファイルを閉じる
TextViewer tTV
If tTV = "NotSetting" Then
MsgBox "Converted",vbYesNo,"Script to HTML Converter"
Else
WSHShell.Run tTV & vbWq & sF & vbWq, 1
Wscript.Sleep 1000
End If
End If
End If
End If
Next
Set Parameters = Nothing
Set Fs = Nothing
Set WSHShell = Nothing
Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'TextViwer - テキストファイルを開く既定アプリケーションをフルパスで返します。
'- Created by LazwardFox -

' Release 20090315 2053
' DevStart 20090315 0938

Function TextViewer(ResultKey)
Dim sTV
Const RegKey = "HKCR\txtfile\shell\open\command\"
sTV = WSHShell.RegRead(RegKey)
sTV = Replace(sTV, " " & vbWq & "%1" & vbWq, "")
If Fs.FileExists(sTV) Then
ResultKey = sTv & " "
Else
ResultKey = "NotSetting"
End If
End Function

'------------------------------------
'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


しかし、JavaScript使いには向かないモノになってるっポイ。
と云うのも、文字列を表すときにシングルクォーテーション使われたらドウにもナリません(´ヘ`;)
元々、VBS向けに作成したワケだし・・・
当方みたく、JSでも、ダブルクォーテーション使うって向きなら問題ナシ。

まぁ、このスクリプト中の 検出用のクォーテーションを // に差し替えればJSでも使えるケド・・・
アトで その機能追加しようカナ、拡張子で分岐して・・・


結局、スグに拡張してしまった^_^;
多分問題なく動く・・・ハズw
<そのまま使えるVBscript スクリプト HTML 公開化 変換 pre>

VBScriptでラクをする そにょ1・・・


ショートカット1クリックで複数フォルダを開けたら…
しかも、当日フォルダがあれば、そっちを見つけて開くとか勝手に出来ないものか・・・
ヒトの手を抜きたいという欲望には限りがないw

そう云う向きに使えるスクリプトなど・・・

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

ファイル名を任意に変えて、同名iniファイルを同じフォルダに配置して利用するのは、今まで紹介したモノと同様。
iniファイルも、単純に
   C:\WINDOWS
C:\WINDOWS\system32\GroupPolicy
と、云う具合に、フォルダを列挙するだけ。

但し、その配下が、
   [指定したフォルダ]
└ yyyy
└ mm
└ dd
と云うカタチの構成の場合で、当日を指すフォルダがあれば、ソチラを優先で開き、
それ以外の指定フォルダは、エクスプローラで ただ開くだけとなる。

下のソースを見てもらえば判ると思うが、コイツは今、うっかり間違って
自身へ フォルダ(複数可)をドロップしても動作するようになってる。
ただエクスプローラで開くだけなので、機能としては、ほぼ無意味。
なのでココは、ini自分で書くのも面倒になってきたってのもあるので、
ini他を自動作成するよう、処理差し替えようかとか考えている。

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

'パラメータ指定/iniファイル記述で、複数の同日日付フォルダを同時に開く。
'単独起動 - 処理なし

'注) 20090223 0300 タスクマネージャ動作時、直接指定の場合、パラメータ指定不可

' Update 20090315 2240 lnkChk機能拡張
' Update 20090315 1958 複数ドロップ、ショートカットドロップに対応。
' Release 20090315 1431
' DevStart 20090315 0812

'***** ↓↓↓ ObjectDecralations ↓↓↓ ************************************************
Dim Parameters, WSHShell, Fs

Set Parameters = WScript.Arguments 'パラメーター取得
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル制御

'***** ↓↓↓ Decralations ↓↓↓ ******************************************************
Const vbWq = """"
Dim win, Explorer, arTargets, iTargets, pTargets(), iRoot, nDT, tFolder, tExec
win = WSHShell.ExpandEnvironmentStrings("%systemroot%")
Explorer = Fs.BuildPath(win,"Explorer.exe") & " /e,"

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
'ParameterCheck BaseSet -----
If Parameters.Count = 0 Then
iTargets = arIni()
ElseIf Parameters.Count = 1 Then
iTargets = Split(Parameters(0),",")
ElseIf Parameters.Count >=2 Then
For Pc = 0 To Parameters.Count - 1
Redim Preserve pTargets(Pc)
pTargets(Pc) = Parameters(Pc)
Next
iTargets = pTargets
Else
Wscript.Quit
End IF
lnkChk iTargets, 1, arTargets '0 - .url無効化
'----------------------------
nDT = iDT("\"," ","",1)(0)
For Each iRoot In arTargets
If iRoot = "" Then
ElseIf Fs.FolderExists(iRoot) Then
tFolder = Fs.BuildPath(iRoot,nDT)
If Fs.FolderExists(tFolder) Then
Else
tFolder = iRoot
End If
tExec = Explorer & tFolder
WSHShell.Run tExec, 1
Wscript.Sleep 500
End If
Next
Set Fs = Nothing
Set WSHShell = Nothing
Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'lnkChk with scGet
'- Created by LazwardFox -

'パラメータがショートカットファイル(.lnk/.url)を指す場合、
'リンク先フルパスに差し替えて配列を返す。

' Update 20090315 2240 Control処理拡張
' Release 20090315 1958
' DevStart 20090315 1634

'lnkChk(
' SourceArray 配列での入力に限定されます。
' ,Control 0 - .urlファイル(インターネットショートカット)は無効化
' 1 - ショートカット内URL有効化 / 2 - 無条件
' ,ResultArray 処理結果を配列で返します。無効な配列は削除されています。
' )

Function lnkChk(SourceArray,Control,ResultArray)
Dim Pc, iSA, eSA, cSA, lPass, ePass, rSAs()
Pc = 0
For Each iSA in SourceArray
eSA = Ucase(Fs.GetExtensionName(iSA))
cSA = (eSA = "LNK") or ((eSA = "URL") And Control > 0)
If cSA Then '-- lnk/url TargetGet
scGet iSA, lPass
ePass = Ucase(Fs.GetExtensionName(lPass))
If ePass = "" Then '-- Folder True
ElseIf Control >= 2 Then '-- All True - NoLimit
ElseIf ePass = "HTML" And Control >= 1 Then '-- URL True
Else '-- BadTarget
lPass = ""
End If
ElseIf eSA = "" Then '-- Folder
lPass = iSA
Else '-- lnk/url Cancel
lPass = ""
End If
If lPass = "" Then '-- NullSkip
Else '-- ArraySet
Redim Preserve rSAs(Pc)
rSAs(Pc) = lPass
Pc = Pc + 1
End If
Next
ResultArray = rSAs
End Function

'------------------------------------
'scGet - ショートカットファイル(.lnk/.url)のリンク先フルパスを返す。
'- Created by LazwardFox -

'Update
'Release 20090315 1958
' DevStart 20090315 1634

' scGet(
' scSource ショートカットファイルのフルパスを指定
' ,scResult ショートカット内のリンク先を返します。
' 任意の変数を割り当ててください。
' )

Function scGet(scSource, scResult)
Dim tSc
If Fs.FileExists(scSource) Then
Set tSc = WSHShell.CreateShortcut(scSource)
scResult = tSc.TargetPath
Set tSc = Nothing
Else
scResult = ""
End If
End Function

'------------------------------------
'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

'------------------------------------
'arIni with iniLoader
'- Created by LazwardFox -

'スクリプトと同名のiniファイルがあれば、内容を配列で取得
'対象フォルダを取得、iniファイルがあれば優先する。戻り値は配列

' Update 20090223 0550 変則的フォルダ名回避のため修正
' Release 20090223 0509

Public Function arIni()
Dim sNFull, rFolder, sN, iniFile
sNFull = Wscript.ScriptFullName
rFolder = Fs.GetParentFolderName(sNFull)
sN = Fs.GetBaseName(sNFull)
iniFile = Fs.BuildPath(rFolder,sN & ".ini")
If Fs.FileExists(iniFile) Then
arIni = iniLoader(iniFile,0)
Else
arIni = Array(rFolder)
End If
End Function

'------------------------------------
'iniLoarder - 対象をiniファイルより取得。
'- Created by LazwardFox -

' Update 20090223 0550 戻り値可変 [ 0 - 配列 ] [ 1 - カンマ区切り文字列 ]
' Release 20090223 0509

Public Function iniLoader(iniFile, Control)
Dim nS
nS = Fs.GetFile(iniFile).size
If nS = 0 Then
iniLoader = Array(Fs.GetParentFolderName(iniFile))
Else
Dim iFile, lResult, strResults
Set iFile = Fs.OpenTextFile(iniFile,1) 'iniファイルを読み取りモードで開く
WScript.Sleep 150
Do Until iFile.AtEndOfStream '読み込み
lResult = lResult & ";" & iFile.ReadLine & ";"
Loop
WScript.Sleep 150
iFile.Close 'Iniファイルを閉じる
strResults = Replace(Replace(lResult,";;",","),";","")
If Control = 0 Then
iniLoader = Split(strResults, ",")
Else
iniLoader = strResults
End If
End If
End Function


関数毎にバラバラに管理してたファイルから寄せ集めたので、
クレジットまでダブってしまっているのは御愛嬌ってコトで・・・^_^;
<そのまま使えるVBScript 日付 フォルダ 作成 自動化 複数 ルートフォルダ 指定可能>

2009/03/14

日本の電池メーカ オワタ?・・・


こう云う成果をUSAで出されると、国内メーカにとってはイタいよね・・・ しかもMITって・・・

充電時間が最大36分の1になる画期的なリチウムイオン充電池が登場 - Gigazine [ 20090313 1238 ]

SIGMA SD14専用のリチウムイオンバッテリー BP-21 で云うと、3分30秒前後で充電完了するワケだ・・・
同じ大きさ(バッテリー容積)なら、撮影時間も延びるってコトだろうな・・・

そうなると、のて機でも、便利になるだろうが、結局、
(長時間使える)小型燃料電池と どっちが先に世に出るかで、市場における力関係が決まるだろうな・・・
実用化2~3年後とか云ってたら、まぁアウトだね。 安全性ってのもあるだろうが、Limit1yearってトコかな。
MITも、撃沈したくはナイだろうし、国内に拘らず日本メーカーと結託するコトを激しく推奨するよ。

2009/03/13

VBScriptで鯖管理 そにょ2・・・


このログのスクリプトは以後のログで更新しました。[ 20090411 1839 ]

鯖ってより、Windows(NT系2k以降)端末全般に云えるコトかも知らんが、
Windows起動時のアプリケーション自動起動・・・
[スタート]メニュー、[プログラム]配下の[スタートアップ]に登録したり、
レジストリの
   [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run]    
に登録したりと、やり方は様々だろう。

ただ、残念なことに、これらでは起動順序を指定できない。

唯一その機能を持つレジストリキー RunOnce も、既知と思うが、
システムレベルのファイル更新向けなので、初回起動時にのみ動作し、設定が消去される。

スタートアップ起動させたいが、起動タイミングがカブると具合の悪いものも、意外に少なくはナイようだ。
しかも、スタートアップフォルダ登録では、ログオン時にしか機能しない。

ココで 紛らわしいので一応の解説を入れると、[スタートアップ]フォルダ登録での起動と云うのは、
Windowsのブート後、ログオン画面が表示され、
  (オートログオンを設定している場合は少し違うが、実際は同じ。
   マシンがショボいと、一瞬ログオン画面が見えることがあるので判る)
ユーザーがログオンした後の自動起動をサポートしている。
で、グループポリシーで云うトコロの"スタートアップスクリプト"と云うのが動作するタイミングは、
前述にあるWindowsブートの後半で実行される、
つまり、ログオンより、スタートアップのほうが先行動作する・・・ なんて紛らわしい・・・

で、チョイと判ってるヒトなら、グループポリシーで、スタートアップ/ログオンスクリプトに
実行させたい対象を設定して、起動順序をある程度、制御下においてみることも試みていると思う。
本来はスクリプトを登録するのがスヂっポイのだが、実行ファイルも直接置けるし、パラメータの指定も出来る。

で、そのグループポリシーのスクリプト登録、スタートアップ/ログオン/ログオフ/シャットダウン
それぞれ、分けて設定できる、RAMドライブのような変り種利用者だったら、この意味は判るだろうし、
中々に嬉しい機能だろう。
ただ残念ながら、起動順は設定できるようだが、次の処理までの移行時間までは設定できないと見える・・・

しかしまぁ、ココでもVBScriptが使えるってコトで、だったら・・・とチョイっと作って実働させている。

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


   {sScriptor}.vbe

名称変更 - 拡張子以外 可
iniファイル無しでの単独起動 - 無効
パラメータ - ナシ


   {sScriptor}.ini

名称変更 - 拡張子以外 可

iniファイル内 行書式)

{アプリケーションフルパス};{Parameter};{CallType DDE or 省略};WindowType 0 or 1;{mSec(Interval)};[Title(Memo)]


{アプリケーションフルパス} 起動したいアプリケーションをフルパスで指定
{Parameter} アプリケーションに対するパラメータを記述
{CallType} rundll32.exeほかを使用したアプリケーション起動時には DDE それ以外は指定不要
{WindowType} 0(非表示) or 1(通常)
{mSec(Interval)} 次の処理平衡するまでの時間を1/1000Sec単位で指定
[Title(Memo)] 機能には影響しない、タイトルなどのメモを記述

行頭に;セミコロン配置で、非実行行。



iniファイル例)
   C:\Applications\System Tools\ProcessorManegements\CrystalCPUID\CrystalCPUID.exe;/F22 /P1 /E;;1;4000;[CrystalCPUID]    
C:\Applications\System Tools\Desktop Extension\IconPositionControl\KH Software Factory\KH DeskKeeper\deskkeep.exe;;;1;2500;[KH DeskKeeper]
C:\Applications\System Tools\HardwareControls\Monitor Extension\CoolMonitorOff\cmoff.exe;;;;2000;[CoolMonitorOff]
C:\WINDOWS\system32\SxgTkBar.exe;;;1;3000;[SxgTkBar]
C:\Program Files\Microsoft Office\Office10\OSA.EXE;-b -l;;1;1500;[Microsoft Office]
C:\Applications\System Tools\FEP Extension\XLangBar\XLangBar.exe;;;1;1500;[X LangBar]
C:\Program Files\Windows Defender\MSASCui.exe;-hide;;;5000;[Windows Defender]
C:\Program Files\LSoft Technologies Inc\Active@ Hard Disk Monitor\DiskMonitor.exe;hide;;1;3000;[DiskMonitor]
C:\Applications\Maintenance Tools\Status Uty\Processor Information\ClockSpeed_D\ClockSpeed_D.exe;;;1;1500;[ClockSpeed D]
C:\Program Files\Common Files\Adobe\Calibration\Adobe Gamma Loader.exe;;;;2000;[Adobe Gamma Loader]
C:\WINDOWS\system32\rundll32.exe;shell32.dll,Control_RunDLL desk.cpl,,3;DDE;1;2500;[MonitorProperty DDE]
;C:\WINDOWS\system32\taskmgr.exe;;;1;2000;[TaskManeger]


ちなみにグループポリシーで登録するファイルは、

C:\WINDOWS\system32\GroupPolicy
├ Machine
│ └ Scripts
│ ├ Startup
│ └ Shutdown
└ User
└ Scripts
├ Logon
└ Logoff
に、保存するのが本来らしい、が、そうでなくても機能する。
しかし、[スタートアップ]フォルダのように、ココに直接ファイルを置いただけでは機能しない。
[管理ツール]-[グループポリシー (グループ ポリシー オブジェクト エディタ)]内の、

 [コンピュータの構成]-[Windowsの設定]-[スクリプト(スタートアップ/シャットダウン)]
 [ユーザーの構成]-[Windowsの設定]-[スクリプト(ログオン/ログオフ)]
 
に対し、任意の処理へGUIを使って登録する必要がある。
また、前述のように、既定フォルダ以外に配されている場合は、フルパスでの登録が必要となる。
って、設定がGUIになってるので、心配はナイが・・・

で、以下に、その設定画面の画像を並べてみたので参考にしてほしい。








なんか、このログ作るのに、また新たな副産物が出来てしまった・・・
おかげで、ソースを作ったままの見た目で うp出来るようになった。
と、云うのも、Bloggerの余計な処理のおかげで、preタグが思うように機能しなくてね(-_-;)

んで、今回分のソースなど・・・
    '***** ↓↓↓ScriptTitle↓↓↓ *********************************************************     
' Startup/ShoutdownScripting with out TestMode
'- Created by LazwardFox -

' Update 20090313 1709 パラメータ省略によるエラー処理を訂正
' Update 20090311 1634 inArray を inArrays に差し替え、必須の lArray を追加
' iniLoaderを合せて修正
' Update 20090226 1908 テストルーチン排除
' Update 20090226 1202 DDE式の記述にフラグで対応へ変更
' Update 20090226 1025 DDE式の記述に、通常呼び出しを""で囲んで対応
' Update 20090226 0630 テストモード追加
' Update 20090226 0605 ウィンドウタイプの指定と、インターバルタイム設定可能に。
' Release 20090226 0451
' Update 20090226 0346 iniファイル仕様に変更
' DevStart 20090226 0235 単純動作のみ機能

'***** ↓↓↓ ObjectDecralations ↓↓↓ *************************************************
Dim WSHShell, Fs
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル制御

'***** ↓↓↓Decralations↓↓↓ *********************************************************
Dim sTitle, artargets, iExe, sWq, rTarget, wType, sSec
Const vbWq = """"
sTitle = Fs.GetBaseName(Wscript.ScriptName)

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
arTargets = arIni(";")
If IsEmpty(arTargets) Then
Else
For Each iExe In arTargets
If IsEmpty(iExe(0)) or iExe(0) = "" Then
ElseIf iExe(0) = "" Then
ElseIf Fs.FileExists(iExe(0)) Then
sWq = vbWq
If IsEmpty(iExe(2)) or iExe(2) = "" Then
ElseIf Ucase(Cstr(iExe(2))) = "DDE" Then
sWq = ""
End If
rTarget = sWq & Cstr(iExe(0)) & sWq
If IsEmpty(iExe(1)) or iExe(1) = "" then
Else
rTarget = rTarget & " " & sWq & Cstr(iExe(1)) & sWq
End If
If IsEmpty(iExe(3)) or iExe(3) = "" Then
ElseIf IsNumeric(iExe(3)) Then
wType = Cint(iExe(3))
Else
wType = 0
End If

WSHShell.Run rTarget, wType
If IsEmpty(iExe(4)) or iExe(4) = "" Then
ElseIf IsNumeric(iExe(4)) Then
sSec = Cint(iExe(4))
WScript.Sleep sSec
Else
sSec = 0
End If
End If
Next
End If
Set Fs = Nothing
Set WSHShell = Nothing
Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'arIni - スクリプトと同名のiniファイルがあれば、内容を配列で取得
'- Created by LazwardFox -

' Update 20090226 0330
' Update 20090223 0550 変則的フォルダ名回避のため修正
' Release 20090223 0509

Public Function arIni(lS)
Dim sNFull, rFolder, sN, iniFile
sNFull = Wscript.ScriptFullName
rFolder = Fs.GetParentFolderName(sNFull)
sN = Fs.GetBaseName(sNFull)
iniFile = Fs.BuildPath(rFolder,sN & ".ini")
If Fs.FileExists(iniFile) Then
arINI = iniLoader(iniFile,lS,0)
End If
End Function

'------------------------------------
'iniLoader - 対象をiniファイルより取得、既存iniファイルのみ指定可。
'- Created by LazwardFox -

' Update 20090311 1650 inArraysに合せて修正
' Update 20090226 1025 DDE式の記述に対応
' Update 20090226 0855 データ内にコンマを利用可能に
' Update 20090226 0356 多重配列向けに修正
' Update 20090223 0550 戻り値可変 [ 0 - 配列 ] [ 1 - lSplitterで指定した区切り文字で連結された文字列 ]
' Release 20090223 0509

Public Function iniLoader(iniFile, lSplitter, Control)
Dim nS
nS = Fs.GetFile(iniFile).size
If nS = 0 Then
iniLoader = Array(Fs.GetParentFolderName(iniFile))
Else
If IsEmpty(lSplitter) Then
lSplitter = ","
End If
Dim iFile, lResult, strResults, rL, iniLoaded
Set iFile = Fs.OpenTextFile(iniFile,1) 'iniファイルを読み取りモードで開く
WScript.Sleep 150
Do Until iFile.AtEndOfStream '読み込み
rL = iFile.ReadLine
lResult = lResult & "**" & rL & "**"
Loop
WScript.Sleep 150
iFile.Close 'Iniファイルを閉じる
strResults = Replace(Replace(lResult,"****","*"),"**","")
If Control = 0 Then
inArrays strResults, "*" & lSplitter, iniLoader
Else
iniLoader = Replace(strResults,"*",lSplitter)
End If
End If
End Function

'------------------------------------
'inArrays - 多次元配列構築
'- Created by LazwardFox -

'配列 及び 文字列から、区切り文字を指定して多重配列を作成し返す。

' Update 20090228 1248 strLimitters指定に、区切り文字 ~(チルダ)不要に。
' Update 20090228 0833 配列のほか、文字列もソースに適用可能に。
' Update 20090223 0917

'inArrays(
' tSources - 区切り文字を含む文字列 ないし、それらで構成された配列
' ,strLimitters - 区切り文字を順番に並べた文字列を指定
' ,arReturn - 戻り値が代入されます。
' )

Function inArrays(tSources, strLimitters, arReturn)
Dim arSources, arLimitters, iLimitter, arInArrays, iSource, Pc
arSources = tSources
lArray strLimitters, arLimitters '< Update 20090228 1248
For Each iLimitter In arLimitters
If VarType(arSources) = 8 Then
arInArrays = Split(arSources,iLimitter)
Else
Pc = 0
ReDim arInArrays(0)
For Each iSource in arSources
ReDim Preserve arInArrays(Pc)
arInArrays(Pc) = Split(iSource,iLimitter)
Pc = Pc + 1
Next
End If
arSources = arInArrays
arInArrays = Null
Next
arReturn = arSources
End Function

'------------------------------------
'文字列を1文字ずつバラし、配列として返す
'- Created by LazwardFox -

' Release 20090228 1246

' lArray(
' strLetters - 分解したい文字列
' ,rArray - 戻り値が代入されます。任意の変数名を指定
' )

Function lArray(strLetters, rArray)
Dim Pc, rLetters()
Set objADO = CreateObject("ADODB.Stream")
With objADO
.Type = 2
.Open
.WriteText strLetters
Pc = 0
.Position = 0
Do Until .EOS
ReDim Preserve rLetters(Pc)
rLetters(Pc) = .ReadText(1)
Pc = Pc + 1
Loop
End With
rArray = rLetters
objADO.Close
Set objADO = Nothing
End Function


ウチの鯖タンでは、
[HKEY_USERS\.DEFAULT] や [HKEY_CURRENT_USER] 他の
[Software\Microsoft\Windows\CurrentVersion\Run] の中身を全部移行して利用している。

コイツを使って、最速起動に繋がるBoot時のスタートアップパターンとか、見つけてみるのも一興かとw

・・・ただ、タスクマネージャだけはヤメといたほうがイイよ、最小化指定で起動すると、
起動自体は出来るケド、ウインドウとして開かなくなるからww

PowerBar(のて機やUPS接続機以外では不要)は、ココには"身"の記述無かったので、触れていない。
Dr.ワトソンも、敢えて触れずにおいている。(存在忘れてたってのが正しいが・・・)
<そのまま使えるVBscript 鯖管理 起動順序 グループポリシー スタートアップ ログオン ログオフ シャットダウン>

所詮ソノ程度か・・・


関係省庁や自動車メーカーってぇ程度でデキるコトなんてソンなモンだろうなε-( ̄ヘ ̄)┌ヤレヤレ

ITS:交通事故防止に先端情報技術、10年度実現へ - 毎日.jp [ 20090309 1434 ]

バカな御役所連中じゃ、金掛けて無用に規模の大きなハコを作りたがるキライがあるので、
こう云うハナシが出てきたら、注意して推移を見ていかないと、
JHと結託した企業らに、無駄に金を取られる結果となったETCの二の舞となるのだが、
どのくらいのイパーン人が、そう云ったコトを理解しているコトやら・・・
ま、アタマの悪いヤシらが、いくらボられようと知ったこっちゃナイけどネww

はっきり云って、普及も安易な最良策には、そんな大掛かりな設備も費用も、全く必要ない。

★ETC車載器に、WiFiとWiMAX、そしてナビと共用可能なGPSのアンテナを組み込み、
 車ごとにIPv6のUniqueアドレスを割り当てWebサーバとして機能させる。

★車同士がFONのような、WiFiのアクセスポイント 及び 中継局として機能するようにする。

★それぞれのユニット(車)が近接することで通信を開始、それぞれの移動方向を識別し、
 交差点などでの、見通し外位置の車両接近を感知し、警告を表示できるようにする。

コレだけでも、出会い頭の事故などは、カナリ減らせると云うのは、想像に易しい。
ついでに、フラッシュメモリに近接車両のIPをログするようにしておけば、
当て逃げなどの事故の際にも、犯人検挙に寄与できるだろう。

そこで更に、

★安価なUSBカムを接続できるようにし、フラッシュメモリレコーダ回路も搭載し、
 上記Webサーバ機能を利用して、ドライブレコーダ/移動Webカムとして稼動させる。
 
この、Webカム化っては、コレが以外に必須だ。
と云うのも、事故の場合、対象車両炎上などで、機材が灰になるコトもあるだろうし、
機器不良に寄る万一のレコードミスも、結構考えられる。
公開化しておくことで、何れかの他者が記録を取っているコトを期待できる。
そう云う向きを逆手にとって、バックアップとして利用するとwww
接続しているIPすべてをログとり、他のユニット(車両)と相互記録する構造なら、
そう云う折にも、事故に巻き込まれていない ないし、破損軽微な近接車両から画像やIPのログを回収できる。

また、コレはオマケだか、

★信号機や道路標識などにも同様の機能と、Webカムレコーダを追加し、
 接近車両管制(事故防止)Serverとして機能させる。

当然、近接する車両のWebカメラ画像も記録するよう構成するべきだろう。
イマドキ高価な監視カメラなど使わなくとも、高度な画像補正処理がたった1つの石だけで、
それも一瞬で出来ちまう時代だ、チャチぃ防水(赤外線撮影モード付き)Webカムと、
いくらもしないフラッシュメモリレコーダ回路を組み込むだけで、用を成す。
まぁ、コイツに関しては、管轄が警察や国土交通省になるだろうから、ひき逃げなど多々ある事故も、
税金から無駄な人件費や、貴重な時間掛けて捜査する必要性はなくなる。
コノ程度の設備への投資なら、経年換算で、役立たずに掛ける人件費よりは、余程安上がりだ。

そもそも、現在の技術なら、試行機ツクるのにも、殆ど金は必要ナイだろう。
それこそ "ひまつぶし"レベルで出来るワナΨ(`∀´)Ψ

ソノ上、それらシステムは、ユビキタスシステムの一翼を担わせることもでき、一石二鳥と云うわけだ。
以前 国を挙げてヤルと宣うてた、"日本全国隈なくインターネット環境を敷設する"ってのにも、寄与出来そうじゃネ?w
折角コスト掛けてナニかヤるなら、一石で多数の鳥をオトとせるほうが、イイに決まってる。

どうせ今後、車載ETC機は なにかしら必要な社会になってくるだろし、
JHがメーカーに対し、新車への標準搭載を要請しているらしいので、
結局、そう遠からず、要らなくても憑いてくるようになるだろう。
だったら、ココで提案したような機能が追加されてた方が、まだ実があるのではないだろうか?

コイシを流用すれば、いちいちカードを挿すタイプのETC車載器は要らんワナ。
IPv6アドレスを、ETCゲートで取得して、基幹サーバで、対象に課金すればイイだけだし、
(ココは陸運局のナンバー登録管理システムとも連携すべきだろう)
クレジットカードも要らんワナ、銀行のDebitシステムとJH基幹が連動すればコト足りる。

そう考えてみると、現行のETCなんて、ホントバカな構成のシステム組んだモノだな、JHも・・・

しかしまぁ、聴かれてもいないのに、こんな提案してやるなんて、我ながらマヌケだワ、一銭にもならんのに・・・

って、ココに挙げた例は、チョイと考えて思いついた分だけだ、引き出し開ければ案など幾らでもある。
もっとも、こんなログ、車両メーカーや関係省庁の連中が見てるとは とても思えんがねw
ま、ちったぁアタマ使って安全なクルマと交通システムを創るよう、健闘されたし。

やってもうた・・・


プロバイダ切り替えを半ば諦め、解約を保留していたGyaOに戻したまではよかったが、
うっかり、フレッツ光のCTUの設定をそのままにしてしまい、ファイアウォール周りが、
Interlink向けのままで、鯖が外部から繋がらない状態に(゚Д゚;)

宅内からでは、ケータイ使ってテストするくらいしか、
鯖内Webベースでの外部接続テストができない状態なので、すっかり忘れてた(´ヘ`;)

訂正を施し、今、ようやく接続を確認できて ひと安心w
もう、
   おきつねさまのひまつぶし http://www.okitsunesama.com    
で、問題なく繋がる・・・

・・・で、何故にプロバイダを戻したのか? 別段Interlinkの品質に不満は無かった。
が、料金を比較する上で、肝心なコトをすっかり忘れていた。

まず、このイナカでの USEN GyaO光 の場合、with Flets なので、
NTTのをすべて込みでの金額が、
サービス単価数量購入金額ご利用期間
ホームタイプ ISP月額基本料 1,16211,1621月 1日~ 1月31日 
光屋内配線使用料 2001月 1日~ 1月31日 
フレッツ・光プレミアム F利用料 3,0001月 1日~ 1月31日 
消費税218
合  計4,580
となっている。
要は、比較の考え方自体が間違っていたワケだ・・・

ここいらヘン、関東に居た時は、GyaOのマンションタイプで、
USEN側とは直接接続だったので、回線も同社(実際はダークファイバのUSEN借り上げ)だったし、
コチラでも、同社をプロバイダとして選択し、with Flets というカタチでの利用だったので、
料金においても、NTT回線介在でのネットワーク利用と云う感覚は無くなっていた・・・

とは云え過去には、インターネットって NTTの回線+プロバイダの接続サービス ってのしか
選択肢ナイ時代があったんだよね~ あまりに昔のことなので、ホンキで忘却してた・・・ ^_^;

ツマるトコ、Interlinkの場合、あの料金に、NTTの回線分が別途上乗せされるワケで、
切り替えるほどの低価格にはなり得ない・・・むしろ、NTT側の割引がない分、割高になる・・・
で、已む無く、お試し期間中だったInterlinkを断ったと・・・

ただ、USEN GyaOも、NTTの割引期間が切れるまでに、
この地域では光接続最安値の BBIQ へ切り替えるコトも検討している。

アソコも最近は、"鯖キンシ"なんつ~ボケたコト云わなくなったらしいし、
PPPoEギライの当方だが、結局NTTも同じ処理だし、だったらBBIQ選択しないテはナイよな・・・

関東圏でUSEN選択したのは、むしろ価格よりも、光LANをそのまま敷設し、
キホンでIPを8個割り振られるってコトに魅力を感じたコトが要因として大きかった。
(その割には安かったのだが^_^;)
で 以前、USENに問い合わせたみたのだが、どうやらもう、イナカでは自社回線の増設はヤル気ナイらしい・・・
光接続を全国の家庭に ってフレ込みで立ち上がった事業だったような気がしたのだが・・・
志が微妙になってしまっている現状、USENもオワタか?

2009/03/11

VBScriptで鯖管理 そにょ1 オマケ・・・


DateFolderCreateもアーカイブを用意したので ドゾ♪

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


しっかし、エンコードファイル.vbeを、直接やり取りできないコトをすっかり忘却ってたよ^_^;
<そのまま使えるVBScript 日付 フォルダ 作成 自動化 複数 ルートフォルダ 指定可能>

2009/03/10

VBScriptで、日付付きFileBackup・・・


FileBackupper.vbs と .vbe を、暫定で今使ってるままをうpしました。
ファイル/フォルダ右クリックのコンテキストメニューに、
[バックアップ作成]を追加する機能はまだ付いていない版です。

デキルコトは、対象ファイル/フォルダの名称を、
"[元FileName] yyyymmdd hhnnss.[拡張子]" に 変え、コピーを取るだけ。

実働のブツなので使えますが、未使用関数が載ったままになってたりと、
効率が悪い部分が残っています。

改訂版も後日うpするので、コノ分は、あくまで、参考までに・・・

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

使い方は至って簡単、ファイルやフォルダをドラッグするだけ。
ショートカットでの利用も可。

    '***** ↓↓↓ScriptTitle↓↓↓ *********************************************************     
'File/Folder Backuper
'- Created by LazwardFox -

'TargetFile Autobackup
'ドラッグ(パラメータ指定)されたファイルを、
'名称に年月日時分秒を付けて同じフォルダ内にコピーをとる

'Update 20090209 2035
'Release 20060712 1736 フォルダのコピーにも対応させ、正式発行
'DevStart 20060413 1026

'***** ↓↓↓ ObjectDecralations ↓↓↓ *************************************************

Set Parameters = WScript.Arguments 'パラメーター取得
If Parameters.Count <= 0 Then
Wscript.Quit
End If

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル制御

'***** ↓↓↓ Decralations ↓↓↓ *************************************************

Public Target, Source, ThisScript
Public Extention, NameOnly, ProcessFolder
Dim SourceFolder, SourceFiles, SourceFile, RNameOnly
Public Result

Dim BackupFile, strFiles, strResult, SettedPF

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
ThisScriptFull = Wscript.ScriptFullName
ThisScript = Fs.GetBaseName(ThisScriptFull)

For Each SourceFile in Parameters
BackupFile = BackupName(SourceFile )
If Extention = "" Then
Fs.CopyFolder SourceFile, BackupFile
Control = "FolderCopy"
Else
Fs.CopyFile SourceFile, BackupFile
Control = "FileCopy"
End If
'ResultMake '▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
If strResult = "" then
strResult = vbCrlf & "● " & ProcessFolder & "  " & vbCrlf
SettedPF = ProcessFolder
Else
If SettedPF = ProcessFolder Then
Else
SettedPF = ProcessFolder
strResult = strResult & vbCrlf & vbCrlf & "● " & ProcessFolder & "  " & vbCrlf
End If
End If
strResult = strResult & vbCrlf & "  " & NameOnly & "  " & vbCrlf & vbTab & " ▼  " & vbCrlf & "  " & vbTab & RNameOnly & "  " & vbCrlf
'▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
Next
Msgbox strResult,,ThisScript & " " & Control
Set Fs = Nothing
Set WSHShell = Nothing

Wscript.Quit

'***** ↓↓↓Functions↓↓↓ *********************************************************
'------------------------------------
'BackupName - バックアップ後の名称を構築
'- Created by LazwardFox -

'フルパスを返す
'結果表示用変数に値を代入
'NameOnly - ファイル名
'RNameOnly - 変換後ファイル名
'ファイル/フォルダの識別
'Extention - 値が空白で返されたら 対象はフォルダ

'注)完全な独立関数にはなっていない。

'Release 20060712 1743

Public Function BackupName(SourceName )
Dim FoldersFiles, FoldersCount, FileNamesEx, BlockCount, BackupString
FileNamesEx = Split(SourceName,".")
BlockCount = UBound(FileNamesEx)
If BlockCount > 0 Then 'File
Extention = "." & FileNamesEx(BlockCount)
Else 'Folder
Extention = ""
End If
BackupString = " " & iDT(""," ","",0) & Extention

FoldersFiles = Split(SourceName,"\")
FoldersCount = UBound(FoldersFiles)
If Extention = "" Then 'Folder
NameOnly = SourceName
ProcessFolder = SourceName
RNameOnly = SourceName & BackupString
BackupName = RNameOnly
Else 'File
NameOnly = FoldersFiles(FoldersCount)
ProcessFolder = Replace(SourceName, NameOnly, "")
BackupName = Replace(SourceName, Extention, BackupString)
RNameOnly = Replace(BackupName, ProcessFolder, "")
End If
End Function

Public Function FolderSelector()
OnFolder = UpdatesCopy()
For Each SourceFile In SourceFolder.SubFolders
Set SourceFolder = SourceFile
OnFolder = UpdatesCopy()
'▼ Tester ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
msgbox "2 - サブフォルダ数 - " & OnFolder,,ThisScript
'▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
If OnFolder = 0 Then
Else
Set LSourceFolder = SourceFolder
For Each tSourceFolder In LSourceFolder.SubFolders
Set SourceFolder = tSourceFolder
FolderSelector()
Set tSourceFolder = SourceFolder
Next
Set SourceFolder = LSourceFolder
End If
Next
End Function

'------------------------------------
'UpdatesCopy
'- Created by LazwardFox -

Public Function UpdatesCopy()
'▼ Tester ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
If SourceFolder.Files.Count = 0 Then
If SourceFolder.Name="" Then
FolderName = "Root"
Else
FolderName = SourceFolder.Name
End If
msgbox "3 - " & FolderName & vbCrLf & "対象フォルダにファイルが無い",,"UpdatesCopy"
Else
tResult = SourceFolder.name & " - " & SourceFolder.Files.Count & vbCrLf
End If
'▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

For Each SourceFile In SourceFolder.Files
tResult = tResult & SourceFile.Path & vbcrlf
Next

'▼ Tester ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
tResult = Replace(tResult & "_", vbcrlf & "_","")
If Not tResult = "_" Then
msgbox "4 - ファイル一覧" & vbCrLf & tResult,,ThisScript
End If
'▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

UpdatesCopy = SourceFolder.SubFolders.Count
End Function

'------------------------------------
'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


しかし、リリース2006年かぁ・・・(遠い目) ファイル文字列処理に初々しさがあるよねw

ちなみに、もっと程度の低い版なら、2004年にはあったw
更に前だとWinBatch版、もっと前はBatファイルだったなぁ・・・(更に遠い目)

もう、過去のHDDクラッシュで、ソース紛失してるケド^_^;
<そのまま使えるVBscript 日付 添付 バックアップ ファイル フォルダ>

WindowsScriptEncoderを便利に・・・


    このログは、コチラのログ も併読してください。     

----------------- [ 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 つか、要らないと云うほうが正しいカナ。

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

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

'単独起動 - 無効

'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
Wscript.Quit
End If
Set Wsh = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル操作

'***** ↓↓↓Decralations↓↓↓ *********************************************************
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)

'***** ↓↓↓MainRoutine↓↓↓ *********************************************************
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出来るようにしてみました、
   VBSEncodeConnection.zip    
▲ を、右クリックしてファイルとして保存してください。

----------------- [ Update 20090317 2113 ]
このアーカイブはコチラの版に差し替えました。


今までのモノも、似た対応できたんだけど、面倒だったのでw
あと、セキュリティ的に、テキストのほうが安心できる人も多いかと思ったし・・・ (^_^;

ちなみに、エンコード後のファイルはバイナリ形式な上、既にヒトが読めるカタチになってません、
修正や改変は出来ないので、ソースは大事に保管してください。

また、エンコード後のファイル.vbeは、Web環境で利用する場合、
対応している対象がIEだけらしいとのレポートを読んだ記憶があります。(未確認、誤報なら嬉しいが・・・)
あくまで、ローカルでの運用に留めた方が無難かと思われます。


-----------
次回は、FileBackUpper.vbe辺りをソース込みで うp予定。
対象ファイルの名称を "[元FileName] yyyymmdd hhnnss.[拡張子]" に 変え、コピーを取るだけのモノ。
長いこと利用しているブツで、HTML/JavaScript/VBScript etc.. 版管理に威力を発揮している。
初期起動で、ファイル/フォルダ右クリックのコンテキストメニューに、
[バックアップ作成]を追加するようレジストリ設定を行える機能の追加版を用意する予定。
乞うご期待。
<そのまま使えるVBscript WindowsScriptEncoder 容易 使い方>

2009/03/09

ググるさん1ページ目に・・・


・・・検索ワード "おきつねさま" だけで載るようになった^_^; (70件圏内)

気まぐれで、以前シゴトで使ってたVBScriptとかの持ちネタを放出しだしたからか?w
そお云う引き出しなら まだまだあるのだがw♪

VBScriptで日付処理 それから・・・


C++で作成してる別アプリが完了次第、
VBScriptでの日付処理最終版にとりかかる予定。

ただ思うに、C++で .NetFrameworkを利用して、
日付関連の文字列返すActiveXオブジェクトを組んだほうが効率良い様な気も・・・

シェアウェアなら似たようなのあるみたいだけど、
   VisualBasic関数のラッパーDLL VBWRAP ver1.00    
日付だけでイイって向きには、コスト掛けてまでってのはチョットね・・・