Update 20090311 0300
Windowsのタスクに登録して、日毎フォルダを作成するだけのスクリプト。
当然設定は 1日1度 00:00 に 動作させる。
なんでそんなモノ要るのかって?
毎日定点で写真を撮ってるので、保存毎にフォルダ作るのが面倒になったからwww
ちなみに、ココで公開したスクリプトは、元々コレ向けだったものが多いですww
今回の分は、以前の仕事で、
"起動後、特定条件の日だけにデータ取得を動作させるよう、処理を自動化してくれ"
と依頼されて創ったモノをバラし、その断片に、新たな構想を加えて作成したモノです。
(確か、六曜で云う、大安 の日だけって指定だったと思う 当然Windowsのタスクにそんな器用な設定はない。)
iniファイル配置で、複数フォルダを対象に出来るのが、ちょっとだけ凝った点w
つか、コレに関しては、用途的に必須だったってのが事実^_^;
と云うのも、タスクにvbsやvbeを登録する場合、
ソレ自体はスクリプトであって、実行する本体ではないので、パラメータの指定が出来ないと云う罠が・・・
もっとも、ランタイム自体から記述してしまえばイイのだろうが、面倒だ。
どうせなら単純登録だけで使いたい・・・ と云う なんとも手抜きな欲がココまでさせたとも云える・・・
それに、複数のフォルダに同処理を施したかったってものあったので、iniファイルを読み込むカタチにしたと(´ヘ`;)
デキルコトはってぇと、指定フォルダ配下に、
[指定したフォルダ] └ yyyy └ mm └ dd
|
と云うカタチでフォルダを追加するだけw
指定したターゲットフォルダは、既存していることが必須で、ない場合、処理は実行されません。
自動でターゲットフォルダを作成する処理も検討しましたが、セキュリティ的に疑問を感じた為ヤメました。
書式)
DateFolderCreate.vbe {対象フォルダ名{,対象フォルダ名}
|
パラメータ無指定の場合
[スクリプトを起動したフォルダ] └ 2009 └ 03 └ 09
|
と、なり、
コマンドラインやショートカットからの、パラメータ指定起動の場合、
[指定したフォルダ] └ 2009 └ 03 └ 09
|
と なります。
また、スクリプトが配されているフォルダに、スクリプトと同名のiniファイルがあり、
C:\Target,C:\Target\Target
|
ないし、
C:\Target C:\Target\Target
|
と記述があれば、
C:\Target ├ 2009 │ └ 03 │ └ 09 └ Target └ 2009 └ 03 └ 09
|
と、云う結果になります。
指定先に、対象が既存の場合は、スキップするようになっているので、殆ど意識無く使えます。
毎度のコトながら、役割ごとに関数化してあるので、流用もしやすいかと・・・
▼ウチの鯖たん上で、実働してるスクリプトそのもの・・・^_^;
Set Parameters = WScript.Arguments Set Fs = WScript.CreateObject("Scripting.FileSystemObject") Dim arTargets, iRoot, tFolder, sCD, arCD, iChk, sCN If Parameters.Count > 0 Then arTargets = Split(Parameters(0),",") Else arTargets = TargetFolders() End IF arCD = Split(iDT("\"," ",":",1)(0),"\") For Each iRoot In arTargets If Fs.FolderExists(iRoot) Then tFolder = iRoot For Each iChk In arCD sCN = Fs.BuildPath(tFolder,iChk) If Fs.FolderExists(sCN) Then Else Fs.CreateFolder sCN End If tFolder = sCN Next Else End If Next Set Fs = Nothing Set WSHShell = Nothing Wscript.Quit Public Function iDT(dSplitter,dtSeparater,tSplitter,Control) Dim nX, nD, nS, strHMS, sResult nX = Now() nD = FormatDateTime(Date(),0) nS = ":" & Split(CStr(FormatDateTime(nX,3)),":")(2) strHMS = FormatDateTime(nX,4) & nS 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 Public Function TargetFolders() 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 TargetFolders = iniLoader(iniFile,0) Else TargetFolders = Array(rFolder) End If End Function 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) WScript.Sleep 150 Do Until iFile.AtEndOfStream lResult = lResult & ";" & iFile.ReadLine & ";" Loop WScript.Sleep 150 iFile.Close strResults = Replace(Replace(lResult,";;",","),";","") If Control = 0 Then iniLoader = Split(strResults, ",") Else iniLoader = strResults End If End If End Function
|
って、以前のログから読んでるヒトには、使用関数周り、ドコかで見覚え感ありありでしょうが、
まぁ、御愛嬌と云うコトでww
・・・つか、こんなのに用がある閲覧者が居るのかってコトのほうが、いささか疑問だが(´ヘ`;)
<そのまま使えるVBScript 日付 フォルダ 作成 自動化 複数 ルートフォルダ 指定可能>
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。