代码之家  ›  专栏  ›  技术社区  ›  Tarun. P

以静默方式解压缩文件,不使用对话框覆盖

  •  0
  • Tarun. P  · 技术社区  · 6 年前

    Dim folder(3)
    folder(0) = "UBO90R1"
    folder(1) = "UBO90R2"
    folder(2) = "UBO100R1"
    folder(3) = "UBO100R2"
    
    For i = 0 To 3
        unzip_Source = "D:\Autobackup\" & folder(i) & ".zip"
        unzip_destination = "D:\Autobackup_unzip\" & folder(i) &"\"
    
        Call ExtractFilesFromZip(unzip_Source,unzip_destination)
    
        WScript.Echo "unzip Finished"
    Next
    
    Sub ExtractFilesFromZip(pathToZipFile, dirToExtractFiles)
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        pathToZipFile = fso.GetAbsolutePathName(pathToZipFile)
        dirToExtractFiles = fso.GetAbsolutePathName(dirToExtractFiles)
    
        If (Not fso.FileExists(pathToZipFile)) Then
            WScript.Echo "Zip file does not exist: " & pathToZipFile
            Exit Sub
        End If
    
        If Not fso.FolderExists(dirToExtractFiles) Then
            WScript.Echo "Directory does not exist: " & dirToExtractFiles
            Exit Sub
        End If
    
        dim sa  : Set sa = CreateObject("Shell.Application")
        Dim zip : Set zip = sa.NameSpace(pathToZipFile)
        Dim d   : Set d = sa.NameSpace(dirToExtractFiles)
    
        d.CopyHere zip.items, 4
    
        Do Until zip.Items.Count <= d.Items.Count
            WScript.Sleep(200)
        Loop
    End Sub
    

    如果我改变代码中的下一行

    d.CopyHere zip.items, 4
    'Integer 4 didn't show the progress bar
    

    d.CopyHere zip.items, 16
    'Integer 16 overwrite the existing file but it shows the progress bar.
    

    我想在没有任何对话框和进度条的情况下覆盖现有文件。

    here .

    1 回复  |  直到 6 年前
        1
  •  1
  •   M--    5 年前

    看看帮助,我们会发现以下情况。

    Type: FILEOP_FLAGS
    
    Flags that control the file operation. This member can take a combination of the following flags.
    
    FOF_ALLOWUNDO
    
    Preserve undo information, if possible.
    
    Prior to Windows Vista, operations could be undone only from the same process that performed the original operation.
    
    In Windows Vista and later systems, the scope of the undo is a user session. Any process running in the user session can undo another operation. The undo state is held in the Explorer.exe process, and as long as that process is running, it can coordinate the undo functions.
    
    If the source file parameter does not contain fully qualified path and file names, this flag is ignored.
    
    FOF_CONFIRMMOUSE
    
    Not used.
    
    FOF_FILESONLY
    
    Perform the operation only on files (not on folders) if a wildcard file name (.) is specified.
    
    FOF_MULTIDESTFILES
    
    The pTo member specifies multiple destination files (one for each source file in pFrom) rather than one directory where all source files are to be deposited.
    
    FOF_NOCONFIRMATION
    
    Respond with Yes to All for any dialog box that is displayed.
    
    FOF_NOCONFIRMMKDIR
    
    Do not ask the user to confirm the creation of a new directory if the operation requires one to be created.
    
    FOF_NO_CONNECTED_ELEMENTS
    
    Version 5.0. Do not move connected files as a group. Only move the specified files.
    
    FOF_NOCOPYSECURITYATTRIBS
    
    Version 4.71. Do not copy the security attributes of the file. The destination file receives the security attributes of its new folder.
    
    FOF_NOERRORUI
    
    Do not display a dialog to the user if an error occurs.
    
    FOF_NORECURSEREPARSE
    
    Not used.
    
    FOF_NORECURSION
    
    Only perform the operation in the local directory. Do not operate recursively into subdirectories, which is the default behavior.
    
    FOF_NO_UI
    
    Windows Vista. Perform the operation silently, presenting no UI to the user. This is equivalent to FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR.
    
    FOF_RENAMEONCOLLISION
    
    Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists at the destination.
    
    FOF_SILENT
    
    Do not display a progress dialog box.
    
    FOF_SIMPLEPROGRESS
    
    Display a progress dialog box but do not show individual file names as they are operated on.
    
    FOF_WANTMAPPINGHANDLE
    
    If FOF_RENAMEONCOLLISION is specified and any files were renamed, assign a name mapping object that contains their old and new names to the hNameMappings member. This object must be freed using SHFreeNameMappings when it is no longer needed.
    
    FOF_WANTNUKEWARNING
    
    Version 5.0. Send a warning if a file is being permanently destroyed during a delete operation rather than recycled. This flag partially overrides FOF_NOCONFIRMATION.