cwnicol programming

プログラミング関連の投稿をすこしだけ

ワークフォルダ作成スクリプト

概要
手動で一時的な作業用フォルダを作成する手間を省く。

初期設定方法
スクリプト内のベースフォルダ(baseFolder)を設定する。

使用方法
ダブルクリック等でスクリプトを実行。


Windows7で動作確認済み。以下ソース。
  

makeNewWorkFolder.vbs

''''''''''''''''''''''''''''''''''''''''''''''
'【ワークフォルダ作成スクリプト】
''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
On Error Resume Next

Const vbNormalFocus = 1      '通常のウィンドウ、かつ最前面のウィンドウ

Call Main()

''''''''''''''''''''
'main
''''''''''''''''''''
Sub Main()
  Dim objFSO      ' FileSystemObject
  Dim strFolder   ' フォルダ名
  Dim strMessage  ' 表示用メッセージ
  Dim baseFolder  'ベースフォルダ
  Dim newFolderNum  '新フォルダの数字

  '初期設定
  baseFolder = "d:\99.work"

  '新フォルダの数字取得
  newFolderNum = getNum(baseFolder)

  '新フォルダフルパス
  strFolder = baseFolder & "\" & newFolderNum

  'フォルダ作成
  Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
  objFSO.CreateFolder(strFolder)
  If Err.Number = 0 Then
    'フォルダオープン
    openFolder(strFolder)
  Else
      msgbox Err.Number
      strMessage = "エラー: " & Err.Description
  End If

  Set objFSO = Nothing
End Sub

''''''''''''''''''''
'新フォルダの数字取得
''''''''''''''''''''
Function getNum(baseFolder)
  dim fso
  dim folder
  set fso = createObject("Scripting.FileSystemObject")
  set folder = fso.getFolder(baseFolder)

  dim subfolder
  dim biggestNum
  biggestNum = 0
  for each subfolder in folder.subfolders
      if(biggestNum < CInt(subfolder.name)) then
        biggestNum = CInt(subfolder.name)
      end if
  next
  '既に存在する数字フォルダの最大値 + 1
  getNum = biggestNum + 1
End Function

''''''''''''''''''''
'フォルダオープン
''''''''''''''''''''
Sub openFolder(strFolder)
  Dim objWShell
  Set objWShell = CreateObject("WScript.Shell")
  objWShell.Run "rundll32.exe url.dll" & _
            ",FileProtocolHandler " + strFolder, vbNormalFocus, False
End Sub