2010-05-20 2 views
2

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

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

, если файлы из почтового индекса существует в каталоге owerrite них.

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

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

ответ

3

Попробуйте этот гибрид битого/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 
+0

будет ли работать на XP? – Rella

+0

уверен (еще 11 to go ..) – wqw

+0

Можно ли загрузить его с помощью окон Windows о загрузке \ копировании? – Rella

1

Вы можете использовать curl, чтобы загрузить файлы.

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

2

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

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

EDIT: Ваш командный файл должен выглядеть примерно так (вы должны иметь PKUNZIP или другой инструмент CMD-линии (7-зип к) установлены для этого)

@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\ 
+0

Там нет ничего по извлечению \ распаковки из архива. Не могли бы вы добавить пример кода, пожалуйста. – Rella

+0

Есть ли какие-либо родные окна для распаковки файлов/папок ??? – Rella

+0

Насколько я знаю «Нет» (по крайней мере для Windows XP), для Vista может быть что-то ... – Thariama

1

Поскольку Windows 7 включает в себя Powershell ИМХО, вы могли бы использовать этот скрипт Powershell: http://bwain-dump.blogspot.com/2009/01/powershell-script-to-unzip-many-files.html

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