Как создать файл .BAT для загрузки и распаковки zip-файла? - PullRequest
5 голосов
/ 20 мая 2010

Как создать файл .BAT для загрузки и распаковки zip-файла с HTTP-сервера?

У нас есть ссылки типа http://example.com/folder.zip и абсолютная ссылка на папку типа C:\Users\UserName\Some mixed Русский English Adress\

если файлы из zip существуют в каталоге, напишите их.

с использованием только собственных функций Windows (xp vista win7 и т. Д.) И файлов BAT.

Не могли бы вы добавить пример кода, пожалуйста.

Ответы [ 5 ]

4 голосов
/ 20 мая 2010

Попробуйте этот гибридный скрипт 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
3 голосов
/ 20 мая 2010

Если вы действительно хотите использовать bat-файл, вы можете взглянуть на: http://www.chami.com/tips/windows/062598W.html

Пакетный файл будет использовать инструменты командной строки под названием: URL2File

РЕДАКТИРОВАТЬ: ваш командный файл должен выглядеть примерно так (для этого нужно установить pkunzip или другой инструмент cmd-line (7-zip f.e.))

@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\
1 голос
/ 20 мая 2010

Поскольку Windows 7 включает Powershell IMHO, вы можете использовать этот сценарий powershell: http://bwain -dump.blogspot.com / 2009/01 / powershell-script-to-unzip-many-files.html

Если бы не powershell, то, я думаю, нет никакого собственного способа сделать это. Вы можете использовать утилиту zip, которая предоставляет командную строку, например, 7-zip

1 голос
/ 20 мая 2010

Вы можете использовать curl для загрузки файлов.

Руководство включает несколько примеров

0 голосов
/ 21 декабря 2018

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 (создается автоматически).

...