0

現在、古いログ ファイルを削除し、指定された時間枠よりも新しいファイルを取得して、localhost.zip という名前の zip に圧縮するスクリプトがあります。

私がやろうとしているのは、ファイルが圧縮された日付をzipの名前に追加することです。

つまり、localhost_Date.zip のようなものです。

「%computername%」の後に何かを追加する必要があることはわかっていますが、それを処理するための構文がわかりません。

事前に助けてくれてありがとう。また、私のスクリプトに改善点があれば教えてください。私のニーズに合わせてオンラインで見つけた他のスクリプトを微調整して作業する初心者にすぎません。

Option Explicit

Dim oFSO, oFolder, sDirectoryPath 
Dim oFileCollection, oFile, sDir 
Dim iDaysOld 

' Specify Directory Path From Where You want to clear the old files 

sDirectoryPath = "C:\Testscripts\testfolder\"

' Specify Number of Days Old File to Delete

iDaysOld = 7

Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oFolder = oFSO.GetFolder(sDirectoryPath) 
Set oFileCollection = oFolder.Files 

For each oFile in oFileCollection

    'Specify the Extension of file that you want to delete 
    'and the number with Number of character in the file extension 



    If LCase(Right(Cstr(oFile.Name), 3)) = "log" Then

        If oFile.DateLastModified < (Date() - iDaysOld) Then 
        oFile.Delete(True) 
        End If 

    End If   
Next 



Set oFSO = Nothing 
Set oFolder = Nothing 
Set oFileCollection = Nothing 
Set oFile = Nothing 



WScript.Echo "Press to start zipping log files."

Dim objFile, objPath, objFolder, Command, PathLogs, RetVal
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell: Set objShell = CreateObject("WScript.Shell")

PathLogs = "C:\Testscripts\testfolder\" 'This path just has some test logs

' Loop through the logs and zip and move each file (if required, you could just move files with an '.log' extension)


Set objPath = objFSO.GetFolder(PathLogs)
For Each objFile In objPath.Files




    If (LCase(objfso.GetExtensionName(objFile)) = "log") Then

        ' zip files

        Command = """C:\Program Files\7-zip\7z.exe"" a " & PathLogs & "%computername%" & ".zip " & PathLogs & objFile.Name 

        RetVal = objShell.Run(Command,0,true)

    End If

Next

WScript.Echo "Zip Successful."

WScript.Echo "Now Moving Zipped Files into Archived Folder"

'move files

Set objFSO = CreateObject("Scripting.FilesystemObject")
objFSO.MoveFile "C:\Testscripts\testfolder\*.zip" , "C:\Testscripts\testfolder\Archived"

WScript.Echo "Move Successful."
4

1 に答える 1

0

詳細は省略しました、すいません。現在の日付を次のようにフォーマットする 2 行の VBScript コードを次に示しますyyyy-mm-dd(/ファイル名では許可されていないことに注意してください)。

Dim d : d = Date()
Dim dateStr : dateStr = Year(d) & "-" & Right("00" & Month(d), 2) & "-" & Right("00" & Day(d), 2)

' Usage
Command = """C:\Program Files\7-zip\7z.exe"" a " & PathLogs & "%computername%" & "-" & dateStr & ".zip " & PathLogs & objFile.Name

それとは別に、この行:

If LCase(Right(Cstr(oFile.Name), 3)) = "log" Then

FSO.GetExtensionNameを使用して次のように記述できます。

If LCase(oFSO.GetExtensionName(oFile.Name)) = "log" Then
于 2012-06-27T18:44:08.873 に答える