如何创建一个 .BAT 文件来下载并解压缩 zip 文件?

7
如何创建一个.BAT文件从HTTP服务器下载并解压缩zip文件?
我们有像http://example.com/folder.zip这样的链接和绝对文件夹链接,例如C:\ Users \ UserName \ Some mixed Русский English Adress \
如果zip中的文件存在于目录中,则覆盖它们。
只使用本机Windows(xp vista win7等)BAT功能和文件。
你能添加代码示例吗?
6个回答

5

尝试使用这个混合的bat/vbs脚本

@echo off
 > %temp%\~tmp.vbs echo sUrl = "http://www.unicontsoft.com/file.zip"
>> %temp%\~tmp.vbs echo sFolder = "c:\temp\unzip"
>> %temp%\~tmp.vbs (findstr "'--VBS" "%0" | findstr /v "findstr")
cscript //nologo %temp%\~tmp.vbs
del /q %temp%\~tmp.vbs
goto :eof

'--- figure out temp file & folder
With CreateObject("WScript.Shell")  '--VBS
    sTempFile = .Environment("Process").Item("TEMP") & "\file.zip"  '--VBS 
    sTempFolder = .Environment("Process").Item("TEMP") & "\file.zip.extracted"  '--VBS
End With    '--VBS

'--- download
WiTh CreateObject("MSXML2.XMLHTTP") '--VBS
    .Open "GET", sUrl, false    '--VBS
    .Send() '--VBS
    If .Status = 200 Then   '--VBS
        ResponseBody = .ResponseBody    '--VBS
        With Createobject("Scripting.FileSystemObject") '--VBS
            If .FileExists(sTempFile) Then  '--VBS
                .DeleteFile sTempFile   '--VBS
            End If  '--VBS
        End With    '--VBS
        With CreateObject("ADODB.Stream")   '--VBS
            .Open   '--VBS
            .Type = 1 ' adTypeBinary    '--VBS
            .Write ResponseBody '--VBS
            .Position = 0   '--VBS
            .SaveToFile sTempFile   '--VBS
        End With    '--VBS
    End If  '--VBS
End With    '--VBS

'--- extract
With CreateObject("Scripting.FileSystemObject") '--VBS
    On Error Resume Next    '--VBS
    .CreateFolder sFolder   '--VBS
    .DeleteFolder sTempFolder, True '--VBS
    .CreateFolder sTempFolder   '--VBS
    On Error GoTo 0 '--VBS
    With CreateObject("Shell.Application")  '--VBS
        .NameSpace(sTempFolder).CopyHere .NameSpace(sTempFile).Items    '--VBS
    End With    '--VBS
    .CopyFolder sTempFolder, sFolder, True  '--VBS
    .DeleteFolder sTempFile, True   '--VBS
    .DeleteFile sTempFile, True '--VBS
End With    '--VBS

有没有可能在没有Windows下载\复制过程的情况下进行下载? - Rella

3
如果您真的想使用批处理文件,可以查看以下链接:http://www.chami.com/tips/windows/062598W.html。批处理文件将使用一个名为URL2File的命令行工具。
编辑:您的批处理文件应该类似于以下内容(您需要已安装pkunzip或其他命令行工具(例如7-zip)):
@echo off
c:
cd\files
URL2File http://www.server.com/file1.zip file1.zip

for %%f in (file1.zip) do pkunzip %%f c:\user\unziped_files\%%f\

关于从zip文件中提取/解压缩的内容没有任何信息。所以,您能否添加代码示例? - Rella
据我所知,在Windows XP中是“不”,对于Vista可能会有一些东西... - Thariama

3

download_and_unzip.bat:

powershell -command "Start-BitsTransfer -Source http://example.com/folder.zip -Destination folder.zip"
powershell -command "Expand-Archive folder.zip folder/to/extract"

folder.zip下载到当前目录(或任何其他必须存在的目录)。将folder.zip解压缩到folder/to/extract中(自动创建)。


2
您可以使用curl下载文件。 手册中包含多个示例。

1

0

如果您的PC与其他Windows PC一样,应该已经安装了PowerShell。如果您正在尝试从cmd行或批处理脚本运行它,没有问题,您可以在任何命令前面加上单词powershell,以使其通过cmd提示控制台运行!首先,您应该将要下载的文件上传到Dropbox。然后获取一个可共享的链接,将www.dropbox.com替换为dl.dropboxusercontent.com,创建一个直接链接,这不需要人们点击下载按钮。然后像这样制作一个脚本:

start /MAX *drop box link*
timeout 3 >nul
powershell Expand-Archive C:\Users\%USERNAME%\Downloads\*file name* C:/

这将下载文件并将其解压缩到C:/驱动器中,它非常简单且正好做到了它需要做的事情,但不适用于.RAR文件。我希望这能解决你的问题。


我非常惊讶,其他人都声称你需要大量的虚假代码或下载一个真正的解压缩程序,而Windows已经内置了一切。 - guest257351

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接