webentwicklung-frage-antwort-db.com.de

erstellen eines Batch-Skripts zum Entpacken einer Datei ohne zusätzliche Zip-Tools

Ich versuche, ein .bat-Skript für Windows 7 x64 zu erstellen, um einen Ordner zu erstellen, eine Datei in diesen Ordner zu entpacken, ohne zusätzliche Addons wie 7Zip oder Entpacken verwenden zu müssen. Wurde gesucht und es schien, als hätte Windows keine eingebauten Funktionen, um das Entpacken im Befehl zu ermöglichen. Kann ich Dateien ohne zusätzliche Addons entpacken/erweitern? 

28
JustinBieber

Versuche dies:

@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

Um das Entpacken für jede Zip-Datei durchführen zu können, erstellen Sie einen Ordner für jede Verwendung:

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

Wenn Sie nicht möchten, dass ein Ordner für jedes Zip erstellt wird, ändern Sie Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa" in Call :UnZipFile "C:\Temp\" "c:\path\to\%%~nxa".

44
Matt Williamson

Hier ist eine schnelle und einfache Lösung mit 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); }"

Dies verwendet die integrierte Extraktionsfunktion des Explorers und zeigt auch das typische Fortschrittsfenster des Extrakts. Der zweite Parameter 16 bis CopyHere beantwortet alle Fragen mit Ja.

6
Benjamin Krupp

Hier ist meine Übersicht über die integrierten zi/unzip-Funktionen (compress/decompress) in Windows. - Wie kann ich Dateien und Ordner mit Batch-Dateien komprimieren (/ Zip) und dekomprimieren (/ entpacken), ohne externe Tools zu verwenden?

Zum Entpacken der Datei können Sie dieses script verwenden:

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

Wenn Sie über PowerShell 5.0 oder höher verfügen (vorinstalliert mit Windows 10 und Windows Server 2016):

powershell Expand-Archive your.Zip -DestinationPath your_destination
1
Artem

Ein anderer Ansatz für dieses Problem könnte darin bestehen, eine selbstextrahierende ausführbare Datei (.exe) mit etwas wie winzip zu erstellen und diese als Installationsvektor anstelle der Zip-Datei zu verwenden. In ähnlicher Weise können Sie mit NSIS ein ausführbares Installationsprogramm erstellen und dieses anstelle von Zip verwenden. 

1
John