2013年9月21日土曜日

Z10Main/stdlib1.vbs

'stblib1.vbs
'****************************************************************
' 関数: GetFileAttribute 
' 用途: ファイルの情報を取得 
' 入力: ファイルパス 
' 戻値: (作成、更新、サイズ、タイプ、属性)の連結文字列 
'****************************************************************
Function GetFileAttribute(file)

 Dim strGetFileAttribute
 strGetFileAttribute = ""

 Set objFso = CreateObject("Scripting.FileSystemObject")
 Set objFile = objFso.GetFile(file)

 strGetFileAttribute = _
 "作成:" & objFile.DateCreated & _
 " 更新:" & objFile.DateLastModified & _
 " サイズ:" & objFile.Size
 '" タイプ:" & objFile.Type & _
 '" 属性:" & objFile.Attributes

 Set objFile = Nothing
 Set objFso = Nothing

 GetFileAttribute = strGetFileAttribute

End Function


'****************************************************************
' 関数: GetFileType 
' 用途: ZIP検索文字列を含む文字列を返す 
' 入力: 文字列 
' 戻値: URLパス 
'****************************************************************
Function GetFileType(str)

 Dim strGetFileType
 Dim regEx
 Dim Matches
 Dim Match
 
 strGetFileType = ""
 Set regEx = New RegExp

 ' 検索パターンを文字列で設定
 regEx.Pattern = "http://(.+?).zip"

 ' 大文字小文字を区別しない ( この場合はどちらでも良い )
 regEx.IgnoreCase = True
 ' 文字列全体を検索 False だと一件しか検索しない
 regEx.Global = True 

 ' 検索の実行
 Set Matches = regEx.Execute(str)

 For Each Match in Matches
  ' 検索結果の中の () 内の文字列を取得

  IF (strGetFileType = "") THEN

   strGetFileType = Match.SubMatches(0)

   strGetFileType = "http://" & strGetFileType & ".zip"

   'WScript.Echo now & "** Match=" & strGetFileType
   'WScript.Echo now & "** Match=" & Match.SubMatches(0)
   exit For
  End IF

 Next

 GetFileType = strGetFileType

End Function

'****************************************************************
' 関数: GetUrlFile 
' 用途: URL からファイル名を求める 
' 入力: URL 
' 戻値: URLのファイル部分 
'****************************************************************
Function GetUrlFile(s)

 Dim iPos,sGetUrlFile

 sGetUrlFile = ""
 iPos = instrRev(s,"/",-1,1)
 sGetUrlFile = mid(s,iPos+1)
 
 GetUrlFile = sGetUrlFile

End function

'**************************************************************
' 関数: GetUrlFilename 
' 用途: URLパス名からファイル名を求める 
' 入力: URLパス 
' 戻値: URLのファイル名 
'**************************************************************
Function GetUrlFilename(URL)

 Dim sPathName, sFileName, ipos

 ipos = InStrRev(Trim(URL), "/")

 sPathName = Left(URL, ipos)
 sFileName = Mid(URL, ipos + 1)
 
 GetUrlFilename = sFileName

End Function

'****************************************************************
' 関数: GetURI 
' 用途: URLからURIを求める 
' 入力: URL 
' 戻値: URLのURI部分 
'****************************************************************
Function GetURI(s)

 Dim iPos,sURI

 sURI = ""
 iPos = instrRev(s,"/",-1,1)
 sURI = mid(s,1,iPos)
 GetURI = sURI

End function

'****************************************************************
' 関数: GetDriveFree 
' 用途: ドライブの情報を表示 する
' 入力: ファイル 
' 入力: ドライブの情報に表示するコメント 
' 戻値: 空きサイズ 
'****************************************************************
Function GetDriveFree(sPath,msg)


 On Error Resume Next

 Dim objFSO   ' FileSystemObject
 Dim objDrive  ' ドライブ情報
 Dim sDrive   ' ドライブ名
 Dim sType   ' ドライブ種類の文字列
 Dim sGetDriveFree
 
 sGetDriveFree = ""

 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

 IF Err.Number = 0 THEN
  sType = Array("Unknown", "Removable", "HDD", "Network", "CD-ROM", "RAM")
  
  sDrive = objFSO.GetDriveName(sPath)
  WScript.Echo vbtab & vbtab & vbtab & "[ドライブ情報] :" & msg & "ドライブ " & sDrive
  
  
  IF objFSO.DriveExists(sDrive) THEN
  
   Set objDrive = objFSO.GetDrive(sDrive)
   
   If objDrive.IsReady = True Then
    'WScript.Echo " ボリュームラベル:" & objDrive.VolumeName
    'WScript.Echo " 種類      :" & sType(objDrive.DriveType)
    'WScript.Echo " ファイルシステム:" & objDrive.FileSystem
    WScript.Echo vbtab & vbtab & vbtab & "空領域 / 容量 :" & _
     FormatNumber(objDrive.FreeSpace, 0) & " / " & _
     FormatNumber(objDrive.TotalSize, 0) & vbcrlf
    'WScript.Echo " フォルダ    :" & objDrive.Path
    'WScript.Echo " ルートフォルダ :" & objDrive.RootFolder

    sGetDriveFree = objDrive.FreeSpace
   ELSE
    WScript.Echo now & " GetDriveFree 準備ができていません"
   END IF
  ELSE
   WScript.Echo now & " GetDriveFree 存在しません。"
  END IF
 ELSE
  WScript.Echo now & " GetDriveFree エラー:" & Err.Number & Err.Description 
 END IF
 
 'objDrive.Close

 Set objFSO = Nothing
 Set objDrive = Nothing
 
 GetDriveFree = sGetDriveFree
 
End Function

'****************************************************************
' 関数: IsCscript 
' 用途: 自VBSを起動したWSH コマンドがcScriptを返信 
' 入力: 無し
' 戻値: cScriptの時true wScriptの時false 
'****************************************************************
Function IsCscript()

 ' WSH起動コマンド
 Const WHS_COMMAND_WSCRIPT = "wscript.exe"
 Const WHS_COMMAND_CSCRIPT = "cscript.exe"

 IsCscript = true
 IF LCase( Right(WScript.FullName, len(WHS_COMMAND_WSCRIPT)) ) = WHS_COMMAND_WSCRIPT THEN
  IsCscript = false
 END IF

End Function



'****************************************************************
' 関数: SetLogHeader 
' 用途: ログヘッダーページをフォーマット 
' 入力: ヘッダーのコメントメッセージ 
' 戻値: コンピュータ名前 
'****************************************************************
Function SetLogHeader(msg)

 Dim objNetWork    ' ネットワークオブジェクト
 Dim objParm    ' コマンドラインパラメータ 
 Dim i      ' コマンドライン引数の個数 

 Dim chr
 iStepNo = 0

 WScript.Echo now & " ***********************************************************"

 WScript.Echo now & EditTitleLine(" ** Script : " & Wscript.ScriptName)
 WScript.Echo now & EditTitleLine(" ** " & Wscript.ScriptFullName)

 WScript.Echo now & " ** ----------------------------------------------------- **"
 WScript.Echo now & EditTitleLine(" ** WSH : " & Wscript.Name)
 WScript.Echo now & EditTitleLine(" ** " & Wscript.FullName)
 WScript.Echo now & EditTitleLine(" ** " & Wscript.Path)
 WScript.Echo now & " ** ----------------------------------------------------- **"

 Set objParm = WScript.Arguments
 WScript.Echo now & EditTitleLine(" ** Command param count " & objParm.Count)
 
 For i=1 To objParm.Count
  WScript.echo now & EditTitleLine(" ** (" & i & ") " & objParm.Item(i - 1))
 Next
 
 WScript.Echo now & " ** ----------------------------------------------------- **"

 ' ネットワークオブジェクトの作成
 Set objNetWork = WScript.CreateObject("WScript.Network")
 ' ユーザ名
 WScript.echo now & EditTitleLine(" ** UserName     : " & objNetWork.UserName)
 ' ドメイン名
 WScript.echo now & EditTitleLine(" ** UserDomain   : " & objNetWork.UserDomain)
 ' コンピュータ名
 WScript.echo now & EditTitleLine(" ** ComputerName : " & GetComputer())


 WScript.Echo now & " ***********************************************************"
 WScript.Echo now & EditTitleLine(" ** " & msg)
 WScript.Echo now & " ***********************************************************" 


 SetLogHeader = GetComputer()

 Set objNetWork = Nothing 

End Function

'****************************************************************
' 関数: EditTitleLine 
' 用途: 文字列編集、所定のカラム位置に**の文字を挿入する 
' 入力: 変種前文字列 
' 戻値: 編集後文字列 
'****************************************************************
Function EditTitleLine(chr)

 Dim sEditTitleLine
 Dim iMAXCOLS
 iMAXCOLS = 60

 sEditTitleLine = left(chr,len(chr)) & Space(iMAXCOLS-len(" **")-len(chr)) & " **"
 EditTitleLine = sEditTitleLine

End Function


'****************************************************************
' 関数: SetLogStepStart 
' 用途: ログステップ開始のメッセージ表示 
' 入力: ステップ番号 
' 入力: 連結文字列 
' 戻値: 無し 
'****************************************************************
Function SetLogStepStart(iStepNo,msg)

 WScript.Echo now & " **_STEP(" & iStepNo & ")" & " **_START_** " & msg

End Function

'****************************************************************
' 関数: SetLogStepEnd 
' 用途: ログステップ終了 
' 入力: ステップ番号 
' 入力: 連結文字列 
' 戻値: 無し 
'****************************************************************
Function SetLogStepEnd(iStepNo,msg)

 WScript.Echo now & " **_STEP(" & iStepNo & ")" & " **__END__** " & msg & vbCrLf

End Function