Automatic add date and time to Archivename
-
Sorry, still fails with name2.tar.gz or name2.tar.bz2
Could it be the “doubled extension” (two dots) causing problems with
Well, it’s working as expected for me. name2.tar.gz will have the fileextension “gz” and the new filename will be name2.tar_YYYYMMDD_HHMMSS.gz
I assume you want the date and time appear before the first dot, which would be like name2_YYYYMMDD_HHMMSS.tar.gz
Is that correct?
Kind Regards
Micke -
Well, it’s working as expected for me. name2.tar.gz will have the fileextension “gz” and the new filename will be name2.tar_YYYYMMDD_HHMMSS.gz
Yes, but PACOMP cannot create the archive as it needs "tar.gz / tar.bz2 " to perform the compression :p
I assume you want the date and time appear before the first dot, which would be like name2_YYYYMMDD_HHMMSS.tar.gz
Is that correct?
Kind Regards
MickeYes - well at least before the archive type control extension (don’t know if there might be something like
“create.this.archive.for.me.tar.gz” which works in PACL!! )However, this is getting too complicated.
I would be happy just to PREFIX the archive name with time/date to give
YYYYMMDD_HHMMSS_name2.tar.gz
which I guess is much simpler (and clarifies why I asked for YEAR/Month/Day format). -
Yes, but PACOMP cannot create the archive as it needs "tar.gz / tar.bz2 " to perform the compression :p
Ok, then the date and time must be placed before the first dot in the filename
However, this is getting too complicated. I would be happy just to PREFIX the archive name with time/date to give
YYYYMMDD_HHMMSS_name2.tar.gz
which I guess is much simpler (and clarifies why I asked for YEAR/Month/Day format).It’s not that complicated, the problem here is to know all the rules for the fileextension used in PACL before writning the script. I was assuming that we would have filename.extension in all archives.
It’s much simpler to add the date and time in the beginning of the filename. The reason for adding it between the name and the extension is that it will be easier when you list the archives in explorer and they begin with their original filename and the date and time is inside it.
I’ll fix this by adding the date and time before the first dot in the filename instead of the last dot.
Kind Regards
Micke -
Hi TBGBe!
Yes, but PACOMP cannot create the archive as it needs "tar.gz / tar.bz2 " to perform the compression :p
I have tested this and both creation and extraction of archive work with filename like Test1.tar_20100407_213915.bz2 or Test2.tar_20100407_213915.gz
C:\Programs\PACL>pacomp -a Test1.tar_20100407_213915.bz2 *.txt Archive: C:\Programs\PACL\Test1.tar_20100407_213915.bz2 preparing to compress... adding: filelist.txt --> Done. [0%] adding: filelist2.txt --> Done. [0%] adding: LICENSE.TXT --> Done. [22%] adding: MANUAL.TXT --> Done. [59%] adding: ORDER.TXT --> Done. [62%] adding: README.TXT --> Done. [77%] adding: WHATSNEW.TXT --> Done. [100%] BZIPing... please wait... All OK C:\Programs\PACL>C:\Programs\PACL>paext -e -pc:\Programs\Temp Test1.tar_20100407_213915.bz2 Archive --> C:\Programs\PACL\Test1.tar_20100407_213915.bz2 [BZIPed TAR] extracting: filelist.txt --> Done. [0%] extracting: filelist2.txt --> Done. [0%] extracting: LICENSE.TXT --> Done. [22%] extracting: MANUAL.TXT --> Done. [59%] extracting: ORDER.TXT --> Done. [62%] extracting: README.TXT --> Done. [77%] extracting: WHATSNEW.TXT --> Done. [100%] C:\Programs\PACL>C:\Programs\PACL>pacomp -a Test2.tar_20100407_213915.gz *.txt Archive: C:\Programs\PACL\Test2.tar_20100407_213915.gz preparing to compress... adding: filelist.txt --> Done. [0%] adding: filelist2.txt --> Done. [0%] adding: LICENSE.TXT --> Done. [22%] adding: MANUAL.TXT --> Done. [59%] adding: ORDER.TXT --> Done. [62%] adding: README.TXT --> Done. [77%] adding: WHATSNEW.TXT --> Done. [100%] GZIPing... please wait... All OK C:\Programs\PACL>C:\Programs\PACL>paext -e -pc:\Programs\Temp Test2.tar_20100407_213915.gz Archive --> C:\Programs\PACL\Test2.tar_20100407_213915.gz [GZIPed TAR] extracting: filelist.txt --> Done. [0%] extracting: filelist2.txt --> Done. [0%] extracting: LICENSE.TXT --> Done. [22%] extracting: MANUAL.TXT --> Done. [59%] extracting: ORDER.TXT --> Done. [62%] extracting: README.TXT --> Done. [77%] extracting: WHATSNEW.TXT --> Done. [100%] C:\Programs\PACL> ```Maybe I have missed something here :confused: but it seems to work properly for me. Kind Regards Micke -
Hmm, perhaps I’m missing something then - I get this when running the script

-
Hmm, perhaps I’m missing something then - I get this when running the script
Hmm, I can see one thing that could get this error. In the script there’s one constant
Const PACOMP = "C:\Programs\PACL\PACOMP.exe"You are in C:\PACL when you are running the script and the commandline starts with “C:\Programs\PACL\PACOMP.exe”, but are you sure you have PACL installed in that folder? I know I haven’t comment the script about that you have to change this line, because the constant is the same as I have used in previous scripts.
Kind Regards
Micke -
Hi!
Here’s the updated script. Now the date and time always is placed before the first dot in the filename, like this.MyArchive_YYYYMMDD_HHMMSS.properties.txt.tar.bz2
I have also put a check if PACOMP.exe exists in the specified path of the constant. If not, a message will tell you about it and the script will exit.
'*********************************************************************** '* PACOMP_DT.vbs '* @author: Micke '* @hist 2010-04-05 CREATED:Script for adding Date and Time to Filename '* @hist 2010-04-06 BUGFIX: Assumed the file extension always contains '* 3 character, resulting in incorrect '* Filename when using a file extension with '* other than 3 characters. '* @hist 2010-04-06 UPDATE: Added support for different dateformat '* @hist 2010-04-08 UPDATE: Added check for existing PACOMP in the '* specified path '* @hist 2010-04-08 UPDATE: Moved date and time to be placed before '* the first dot in the filename '* '* The script requires 4 parameters '* Usage: cscript PACOMP_DT.vbs <param1> <param2> <param3> <param4> '* '* param1: -d1 = Add current date (YYYYMMDD) to filename '* -d2 = Add current date (DDMMYYYY) to filename '* -d3 = Add current date (MMDDYYYY) to filename '* -d = Works the same as -d1 '* -t = Add current time to filename '* -dt = Add current date and time to filename '* '* param2: The commands PACOMP uses '* param3: Filename of the Archive with extension '* param4: Path to file(s) and/or directory '* '* Add date and time to Archivename MyArchive.zip '* Example: cscript PACOMP_DT.vbs -dt -a C:\Temp\MyArchive.zip D:\*.doc '* '*********************************************************************** Option Explicit 'Variables Dim FSO, WshShell, objRegEx, strDate, strDT_Parameter, strArchiveExtension Dim strTime, strArchiveNamePath, strPACOMP_Commands, strFileName Dim strOnlyArchiveName, strPath, strOnlyArchiveNameNoExtension Dim strCompressionString, bCheck 'Constants Const PACOMP = "C:\Programs\PACL\PACOMP.exe" 'Check number of arguments If WScript.Arguments.Count <> 4 Then WScript.Echo "Usage: cscript PACOMP_DT.vbs <param1> <param2> <param3> <param4>" WScript.Echo "param1: -d1 = Add current date (YYYYMMDD) to filename" WScript.Echo "param1: -d2 = Add current date (DDMMYYYY) to filename" WScript.Echo "param1: -d3 = Add current date (MMDDYYYY) to filename" WScript.Echo "param1: -d = Works the same as -d1" WScript.Echo "param1: -t = Add current time to filename" WScript.Echo "param1: -dt = Add current date and time to filename" WScript.Echo "param2: The commands PACOMP uses" WScript.Echo "param3: Filename of the Archive with extension" WScript.Echo "param4: Path to file(s) and/or directory" WScript.Echo "Example: cscript PACOMP_DT.vbs -dt -a C:\Temp\MyArchive.zip D:\*.doc" WScript.Echo "Will add date and time to Archivename MyArchive.zip" WScript.Quit End If 'Create the FileSystemObject Set FSO = CreateObject("Scripting.FileSystemObject") 'Create the ShellObject Set WshShell = CreateObject("WScript.Shell") 'Get data from the Arguments strDT_Parameter = WScript.Arguments.Item(0) strPACOMP_Commands = WScript.Arguments.Item(1) strArchiveNamePath = WScript.Arguments.Item(2) strFileName = WScript.Arguments.Item(3) 'Check that PACOMP exists in the specified path If FSO.FileExists(PACOMP) Then WScript.Echo "PACOMP.exe found, ok to continue the script" Else WScript.Echo "PACOMP.exe could not be found in the specified path" WScript.Echo "The path is set to: " & PACOMP WScript.Echo "Update the constant PACOMP to contain a valid path" WScript.Echo "Exit the script" WScript.Quit End If 'Check the parameter for Date and Time If CheckDTParameter() = True Then UpdateArchiveName() RunPACOMP() Else WScript.Echo "Parameter 1 incorrect" WScript.Echo "Value set as: " & strDT_Parameter WScript.Echo "Expected value would be: -t, -d, -d1, -d2,-d3, -dt, -d1t, -d2t, -d3t" WScript.Echo "Exit the script" WScript.Quit End If Sub UpdateArchiveName() 'Get the ArchiveName from the path strOnlyArchiveName = Mid(strArchiveNamePath, InStrRev(strArchiveNamePath, "\")+1) 'Get the ArchiveExtension strArchiveExtension = Mid(strArchiveNamePath, InStr(strArchiveNamePath, ".")+1) 'Get the ArchiveName without extension strOnlyArchiveNameNoExtension = Left(strOnlyArchiveName, Len(strOnlyArchiveName)-Len(strArchiveExtension)-1) 'Get the Path without the ArchiveName strPath = Left(strArchiveNamePath,Len(strArchiveNamePath)-Len(strOnlyArchiveName)) 'Insert Date and Time to the ArchiveName If strDT_Parameter = "-d" Or strDT_Parameter = "-d1" Or strDT_Parameter = "-d2" Or strDT_Parameter = "-d3" Then strOnlyArchiveName = strOnlyArchiveNameNoExtension & "_" & strDate & "." & strArchiveExtension ElseIf strDT_Parameter = "-t" Then strOnlyArchiveName = strOnlyArchiveNameNoExtension & "_" & strTime & "." & strArchiveExtension Else strOnlyArchiveName = strOnlyArchiveNameNoExtension & "_" & strDate & "_" & strTime & "." & strArchiveExtension End If strArchiveNamePath = strPath & strOnlyArchiveName End Sub Sub RunPACOMP() 'Create the string with parameters for PACOMP strCompressionString = PACOMP & " " & strPACOMP_Commands & " " & Chr(34) & strArchiveNamePath & Chr(34) & " " & Chr(34) & strFileName & Chr(34) WScript.Echo strCompressionString WshShell.Run strCompressionString, 0, True End Sub Function FormatNumbers(n, totalDigits) If totalDigits > Len(n) Then FormatNumbers = String(totalDigits-Len(n),"0") & n Else FormatNumbers = n End If End Function Function CheckDTParameter() Select Case strDT_Parameter Case "-d" 'YYYYMMDD bCheck = True strDate = Year(Date()) & FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) Case "-d1" 'YYYYMMDD bCheck = True strDate = Year(Date()) & FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) Case "-d2" 'DDMMYYYY bCheck = True strDate = FormatNumbers(Day(Date()),2) & FormatNumbers(Month(Date()),2) & Year(Date()) Case "-d3" 'MMDDYYYY bCheck = True strDate = FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) & Year(Date()) Case "-t" 'HHMMSS bCheck = True GetFormattedTime() Case "-dt" 'YYYYMMDD HHMMSS bCheck = True strDate = Year(Date()) & FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) GetFormattedTime() Case "-d1t" 'YYYYMMDD HHMMSS bCheck = True strDate = Year(Date()) & FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) GetFormattedTime() Case "-d2t" 'DDMMYYYY HHMMSS bCheck = True strDate = FormatNumbers(Day(Date()),2) & FormatNumbers(Month(Date()),2) & Year(Date()) GetFormattedTime() Case "-d3t" 'MMDDYYYY HHMMSS bCheck = True strDate = FormatNumbers(Month(Date()),2) & FormatNumbers(Day(Date()),2) & Year(Date()) GetFormattedTime() Case Else bCheck = False End Select CheckDTParameter = bCheck End Function Sub GetFormattedTime() 'Clear unwanted characters from the date and time Set objRegEx = CreateObject("VBScript.RegExp") objRegEx.Global = True objRegEx.Pattern = "[^0-9]" 'Find out current time strTime = FormatDateTime(Time(), vbLongTime) 'Clear unwanted characters from the date and time strTime = objRegEx.Replace(strTime, "") End Sub</param4> </param3></param2></param1></param4></param3></param2></param1>Kind Regards
Micke -
Hmm, I can see one thing that could get this error. In the script there’s one constant
Const PACOMP = "C:\Programs\PACL\PACOMP.exe"You are in C:\PACL when you are running the script
Blush :o
However, when I remembered to change it, I still have a problem opening the archive using PowerArchiver (not PACL) as it doesn’t handle the tar file because of the date text.
Here’s the updated script.
OK this works well for me now - thanks a lot. :D
-
OK this works well for me now - thanks a lot. :D
No problem, however it was a little more job to get it running the way I wanted than I expected in the beginning.
I suspect the next script will be much more complicated than this one. I haven’t sorted out yet how to solve all the problems in it, but it will be a different way of using PACL to create archives.
Kind Regards
Micke -
-
see http://www.autoitscript.com/autoit3/index.shtml for a simple GUI builder. it’s perfect for a wrapper around a command line tool
-
I have no plans for a GUI, as PA already has a very good and powerful GUI. I also want to thank TBGBe for taking time to test the script. Without your help I wouldn’t find the problem with extensions like tar.gz and tar.bz2.
I haven’t written the next upcoming script yet, but I have some ideas of what it should be able to do. You will see it when it’s ready for test.
Kind Regards
Micke -
I have no plans for a GUI …
That was meant to be a joke - not sure if Guido knew it.
P.S. Welcome back Guido :cool:
-
I was never gone. I was always watching you guys big brother style. I just had nothing interesting to report. :-)
