1.

Solve : Unzip "unknown" file script?

Answer»

Hi, I am new to VBS scripts. Here is my problem. I have a zip file generated by my PC drive A:\ and each time I have a different file name name generated for example line SDD+6+20+6536+1+PD+20081027+105138.zip

This is what i need to do. I need to have VBS script which would unzip this file into my C:\temp without knowing the file name...

This is where I am with it:

STEP1- this script would copy the above mentioned file from A:\ to C:\
Code: [Select]Const OverwriteExisting = True
SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
objFSO.CopyFile "A:\*.zip" , "C:\temp" , OverwriteExisting

Step2- grab the name of the file in C:\temp
Code: [Select]'Option Explicit
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim objFSO, objFldr, objSFldr, objFl, objStream, sFile, sPath, sExtension
'// Create the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'// The file you want the dir printed to...
sFile = "C:\temp\filename.txt"
'// The folder you want a dir of...
sPath = "C:\temp"
Set objStream = objFSO.OpenTextFile(sFile, ForAppending, True)
'// Get the folder
Set objFldr = objFSO.GetFolder(sPath)
For Each objSFldr in objFldr.SubFolders
For Each objFl in objFldr.Files
sExtension = "." & StripExtension(objFl.name)
objStream.WriteLine Replace(StripFilename(objFl.Name), sExtension, "")
Next
Next
objStream.Close
Set objFSO = Nothing
Set objStream = Nothing
Set objFldr = Nothing
Set objFl = Nothing

Function StripFilename(strFile)
  dim sTemp
  sTemp = Split(strFile, "\")
  StripFilename = sTemp(UBound(sTemp))
End Function

Function StripExtension(strFile)
  Dim sTemp
  sTemp = Split(strFile, ".")
  StripExtension = sTemp(UBound(sTemp))
End Function

Step3 - unzip the file into C:\temp directory
Code: [Select]strZipFolder = "C:\myfilename.zip"                                       'name of zip file
  outFolder = "C:\temp"                                       'destination folder of unzipped files
 
  Set objShell = CreateObject( "Shell.Application" )
  Set objSource = objShell.NameSpace(strZipFolder).Items()
  Set objTarget = objShell.NameSpace(outFolder)
  intOptions = 256
  objTarget.CopyHere objSource, intOptions

In step2 the script would dump the filename into the file filename.txt but I want it to substitute that file name with myfalename name so I can unzip that file.

Can anyone help me?

Thanks. UNLESS I missed something, you copied all the files from the floppy to temp. Then you create a text file listing the contents of temp. Then you decompress the zips from temp.

In step 2 you have a handle to the files to unzip (objFl). Try moving the unzip LOGIC from step 3 to step 2. After writing to filename.txt, you can use objFl.Path as the strZipFolder.

Another solution would be to copy each file from the floppy one at a time and doing the unzipping in step 1 directly off the floppy. The would prevent zip files mixing in with other extensions.

 





Discussion

No Comment Found