Help us understand the problem. What is going on with this article?

vbsでttl自動実行後、ダウンロードした複数ファイルを圧縮する

' =================================================
' 処理の流れ
' オブジェクトの宣言
' ↓
' ttlの実行
' ↓
' カレント内に ttlファイル名の圧縮フォルダを作成
' ↓
' ダウンロードフォルダ内のファイルを圧縮フォルダへ移動する
' ↓
' TeraTermLogを圧縮フォルダへコピーする
' ↓
' ファイルをpassword付きでzip化する
' ↓
' zipしたエクスプローラを開く
' ↓
' オブジェクトの破棄
' =================================================

Option Explicit   ' 厳格化

' =================================================
' オブジェクトの宣言
' =================================================
Dim objWshShell      ' WScript.Shell
Dim objFSO           ' FileSystemObject
Dim objDownPath      ' ダウンロードフォルダのフルパス(オブジェクト)
Dim objTeraFol       ' TeraTermLogのフルパス(オブジェクト)
Dim objTeraFileName  ' TeraTermLogファイル名(オブジェクト)
Dim objOutFile       ' 圧縮対象のファイルリスト(オブジェクト)
Dim objPackFolPath   ' packフォルダのフルパス(オブジェクト)
Dim objShell         ' Shell.Application

' ===========================================
' ttlの実行
' ===========================================
Dim ttlFileName   ' ttlファイル名
Dim res           ' ダイアログ分岐用
Dim curreFolPath  ' カレントのフルパス
Dim teraExePath   ' 実行ファイルのフルパス
Dim ttlPath       ' ttlファイルのフルパス

' ※注意点
'   ↓↓必要に応じてttlファイルを変更する↓↓
ttlFileName = "test.ttl"

Call ttlRun(ttlFileName)
Sub ttlRun(ttlFileName)
    Set objWshShell = WScript.CreateObject("WScript.Shell")
    ' カレントのフルパスを取得
    curreFolPath = objWshShell.CurrentDirectory
    ' 実行ファイルのフルパスを取得
    teraExePath = """c:\Program Files (x86)\teraterm\ttpmacro.exe"""
    ' ttlファイルのフルパスを取得
    ttlPath = curreFolPath &"\"& ttlFileName
    ' ttlファイルの実行判定
    res = MsgBox(ttlPath & vbCR & vbCR & "の実行を開始しますか?",33)
    If res = vbCancel Then
       WScript.Quit
    End If
    ' ttlファイルの実行
    objWshShell.Run teraExePath &" "& ttlPath, 1, True
End Sub


' ==============================================
' カレント内に ttlファイル名の圧縮フォルダを作成
' ==============================================
Dim packFolName ' 圧縮フォルダ名
Dim packFolPath ' 圧縮フォルダのフルパス

Call createPackFolder()
Sub createPackFolder
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    ' 拡張子無しのttlファイル名を取得
    packFolName = objFSO.getBaseName(ttlPath)
    ' 圧縮フォルダのフルパスを取得
    packFolPath = curreFolPath &"\"& packFolName
    ' 圧縮フォルダが存在しない場合、新規作成する
    If objFSO.FolderExists(packFolPath) = False Then
       objFSO.CreateFolder(packFolPath)
    End If
End Sub


' ========================================================
' ダウンロードフォルダ内のファイルを圧縮フォルダへ移動する
' ========================================================
Dim deskTopFolPath  ' デスクトップのフルパス
Dim downFolPath     ' ダウンロードフォルダのフルパス
Dim downFiles       ' ダウンロードフォルダ内のファイル名(配列カウント用)
Dim strExtension    ' 拡張子
Dim downFileName    ' ファイル名

deskTopFolPath = objWshShell.SpecialFolders("desktop")
' ダウンロードフォルダのフルパスを取得
' ※注意点
'   ↓↓必要に応じてダウンロードフォルダ名を変更する↓↓
downFolPath = deskTopFolPath & "\" & "down"

' ダウンロードフォルダのフルパスをオブジェクトにセット
Set objDownPath = objFSO.GetFolder( downFolPath ) 
'
' ダウンロードフォルダ内のsql以外のファイルを圧縮フォルダへ移動
For each downFiles in objDownPath.Files

   'ファイルの拡張子を取得する
   strExtension = objFSO.GetExtensionName(downFiles)
   downFileName = downFiles.name
   If strExtension <> "sql" then
      objFSO.MoveFile downFiles, packFolPath & "\" & downFileName
   End If

Next


' =====================================
' TeraTermLogを圧縮フォルダへコピーする
' =====================================
Dim teraFolPath      ' TeraTermLogのフルパス
Dim TeraFile         ' TeraTermLog(配列カウント用)
Dim sysDate          ' システム日付
Dim upDateTime       ' テラログの更新日時
Dim teraFileName     ' TeraTermLog ファイル名

' TeraTermLog のフルパスを代入
' ※注意点
'   ↓↓必要に応じてパスを変更します↓↓
teraFolPath = deskTopFolPath & "\" & "teratermlog"
'システム日付を取得(yyyyMMdd)
sysDate = Now()

' TeraTermLogフォルダ名をオブジェクトへセット
Set objTeraFol = objFSO.GetFolder( teraFolPath )

For each TeraFile in objTeraFol.Files
    teraFileName = TeraFile.name
    'File名をオブジェクト変数へセット
    Set objTeraFileName = TeraFile

    '更新日時を取得
    upDateTime = objTeraFileName.datelastmodified

    '更新日時が100秒以内の場合、圧縮フォルダへコピーする
    If DateDiff("s", upDateTime, sysDate) < 100 Then
        objFSO.CopyFile TeraFile, packFolPath & "\" & teraFileName
    End if
Next

' =================================================
' 圧縮フォルダ内のファイルをpassword付きでzip化する
' =================================================
Dim tmpFilelistPath ' 圧縮対象のファイルリストのフルパス
Dim packFile        ' packファイル(配列カウント用)
Dim packExePath     ' 圧縮実行ファイルのフルパス
Dim packOpt         ' 圧縮時のオプションと引数

' デスクトップに圧縮対象リストファイルを一時的に作成
tmpFilelistPath = deskTopFolPath & "\filelist.tmp"

'ファイルリストを書き込みモードでオープン
Set objOutFile = objFSO.OpenTextFile(tmpFilelistPath,2,true)

' 圧縮フォルダのフルパスをオブジェクトへセット
Set objPackFolPath = objFSO.GetFolder( packFolPath )

' 圧縮フォルダ内のファイルをリストに書込み
For each packFile in objPackFolPath.Files
    objOutFile.WriteLine packFile
Next
'ファイルリストのクローズ
objOutFile.Close

'圧縮実行ファイルのフルパスを代入
' ※注意点
'   ↓↓必要に応じて実行ファイルのパスを変更する↓↓
packExePath = """c:\Program Files (x86)\test.exe"""

' オプションと引数を代入する
' パス内に半角スペースがあると正しく値が取れないため
' Chr(34)を使用している
' /n 圧縮zip名
' ※注意点
'   ↓↓パスワードは必要に応じて変更する↓↓
packOpt = "/c:zip /p:PASSWORD /n:" & Chr(34) & packFolPath _
        & "\result.zip" & Chr(34) & " /l:" & tmpFilelistPath & " /d"

' 圧縮を実行します。
objWshShell.Run packExePath &" "& packOpt, 1, True


' ==========================
' zipしたエクスプローラを開く
' ==========================
Dim zipFolPath   ' zipしたフォルダのフルパス

Call ExploreOpen()
Sub ExploreOpen
    zipFolPath = packFolPath
    Set objShell = WScript.CreateObject("Shell.Application")

    ' zipしたエクスプローラを開きます
    objShell.Explore zipFolPath
End Sub


' =================
'オブジェクトの破棄
' =================
Set objTeraFol = Nothing
Set objTeraFileName = Nothing
Set objDownPath = Nothing
Set objFSO = Nothing
Set objWshShell = Nothing
Set objShell = Nothing
Set objOutFile = Nothing
Set objPackFolPath = Nothing
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away