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