Подтвердить что ты не робот

Создание пакета script для распаковки файла без дополнительных инструментов zip

Я пытаюсь создать .bat script для Windows 7 x64 для создания папки, распакуйте файл в эту папку, не используя дополнительные аддоны, такие как 7zip или unzip. Был поиск, и казалось, что в окнах нет встроенных функций, позволяющих легко распаковывать файлы в команде. Могу ли я распаковать/развернуть файлы без дополнительных аддонов?

4b9b3361

Ответ 1

Попробуйте следующее:

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\path\to\batch.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

Revision

Чтобы он выполнял распаковку в каждом zip файле, создавая папку для каждого использования:

@echo off
setlocal
cd /d %~dp0
for %%a in (*.zip) do (
    Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa"
)
exit /b

Если вы не хотите, чтобы он создавал папку для каждого почтового индекса, измените Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa" до Call :UnZipFile "C:\Temp\" "c:\path\to\%%~nxa"

Ответ 2

Здесь мой обзор о встроенных возможностях zi/unzip (сжимать/распаковывать) в Windows - Как сжимать (/zip) и распаковывать (/unzip) файлы и папки с помощью пакетный файл без использования каких-либо внешних инструментов?

Чтобы распаковать файл, вы можете использовать этот script:

zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep yes -force no

Ответ 3

Другим подходом к этой проблеме может быть создание самораспаковывающегося исполняемого файла (.exe) с использованием чего-то вроде winzip и использование этого как вектор установки, а не zip файл. Аналогично, вы можете использовать NSIS для создания исполняемого установщика и использовать его вместо zip.

Ответ 4

Вот быстрое и простое решение с помощью PowerShell:

powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace('C:\extractToThisDirectory'); $zip = $shell.NameSpace('C:\extractThis.zip'); $target.CopyHere($zip.Items(), 16); }"

В нем используется встроенная функция извлечения Explorer, а также отображается типичное окно выполнения экстракта. Второй параметр 16 - CopyHere отвечает на все вопросы с помощью да.