Erstellen.zip-Ordner über die Befehlszeile - (Windows)

Ist es möglich, eine zu erstellen .zip-Datei aus einem Ordner in der Befehlszeile, ich möchte keine ausführbare Datei von Drittanbietern verwenden.

Ich dachte so etwas wie 'In komprimierten Ordner senden', aber ich weiß nicht, wie ich es machen soll...

 97
Author: Steven Penny, 2010-10-20

11 answers

Tar -

Windows 10 enthält tar.exe:

# example 1
tar.exe -a -c -f out.zip in.txt
# example 2
tar.exe -x -f out.zip

Https://techcommunity.microsoft.com/t5/containers/-/ba-p/382409

Wenn Sie ältere Fenster haben, können Sie es trotzdem herunterladen:

Https://github.com/libarchive/libarchive/releases

PowerShell -

# example 1
Compress-Archive in.txt out.zip
# example 2
Expand-Archive out.zip

Https://docs.microsoft.com/powershell/module/microsoft.powershell.archive

Verzeichnis

Für beide Tools können Sie eine Datei oder ein Verzeichnis für die Eingang.

 80
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-06 01:30:18

Stellen Sie sich vor, Sie möchten denselben Ordner wie an der Eingabeaufforderung komprimieren, OHNE ein Powershell-Fenster zu öffnen:

powershell Compress-Archive . publish.zip
 21
Author: Wagner Bertolini Junior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-07-04 11:29:13

Ich glaube nicht, dass in Windows eine Befehlszeile für ZIP-Dateien integriert ist (außer compress im Server 2003 Resource Kit). Sie müssten einen Dritten benutzen. Jeder liebt 7zip - !

 8
Author: EMMERICH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-10-20 07:57:39

Ich habe dieses Skript aus verschiedenen Quellen kombiniert, um meinen Bedürfnissen besser zu entsprechen. Kopieren Sie das Skript und fügen Sie es in eine Datei mit der Erweiterung "ein.vbs". Das Skript wurde ursprünglich für Windows XP gemacht, aber es funktioniert auch in Windows 7 x64 Ultimate-keine Garantie ist, wenn Windows um die verschiedenen Shell-Objekte halten diese verwendet.

Verwendung: im Feld Ausführen oder in der Befehlszeile put -

"C:\zipper.vbs" "C:\folderToZip\" "C:\mynewzip.zip"

Pfad zum Skript, Quellordner, ZIP-Datei zu machen (include .zip am Ende).

Es wird nicht kopiert leere Ordner also vorsichtig sein.

Hier ist der vbs-code- - -

Set Args = Wscript.Arguments
source = Args(0)
target = Args(1)

' make sure source folder has \ at end
If Right(source, 1) <> "\" Then
    source = source & "\"
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set zip = objFSO.OpenTextFile(target, 2, vbtrue)
' this is the header to designate a file as a zip
zip.Write "PK" & Chr(5) & Chr(6) & String( 18, Chr(0) )
zip.Close
Set zip = nothing

wscript.sleep 500

Set objApp = CreateObject( "Shell.Application" )
intSkipped = 0

' Loop over items within folder and use CopyHere to put them into the zip folder
For Each objItem in objApp.NameSpace( source ).Items
    If objItem.IsFolder Then
        Set objFolder = objFSO.GetFolder( objItem.Path )
        ' if this folder is empty, then skip it as it can't compress empty folders
        If objFolder.Files.Count + objFolder.SubFolders.Count = 0 Then
            intSkipped = intSkipped + 1
        Else
            objApp.NameSpace( target ).CopyHere objItem
        End If
    Else
        objApp.NameSpace( target ).CopyHere objItem
    End If
Next

intSrcItems = objApp.NameSpace( source ).Items.Count
wscript.sleep 250

' delay until at least items at the top level are available
Do Until objApp.NameSpace( target ).Items.Count + intSkipped = intSrcItems
    wscript.sleep 200
Loop

'cleanup
Set objItem = nothing
Set objFolder = nothing
Set objApp = nothing
Set objFSO = nothing
 8
Author: WSkid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-01 18:23:51

Es ist möglich, Powershell-Skript von BAT auszuführen. Bat-Datei erhalten Pfad zu dir gezippt werden und ZIP-Dateinamen als Parameter.

@echo off
setlocal

rem First parameter - path to dir to be zipped
rem Second parameter- zip file name
set sourceDir=%1
set zipFile=%2

rem Create PowerShell script
echo Write-Output 'Custom PowerShell profile in effect!'    > %~dp0TempZipScript.ps1
echo Add-Type -A System.IO.Compression.FileSystem           >> %~dp0TempZipScript.ps1
echo [IO.Compression.ZipFile]::CreateFromDirectory('%sourceDir%','%~dp0%zipFile%') >> %~dp0TempZipScript.ps1

rem Execute script with flag "-ExecutionPolicy Bypass" to get around ExecutionPolicy
PowerShell.exe -ExecutionPolicy Bypass -Command "& '%~dp0TempZipScript.ps1'"
del %~dp0TempZipScript.ps1
endlocal
 3
Author: cam029,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-11-30 12:19:08

Ich werde etwas posten, das mit WSkids zu tun hat, da ich die Kommentarfunktion leider nicht verwenden kann.

Die Verwendung der CopyHere () - Methode in VBS führt zu mehreren Problemen. Eines dieser Probleme besteht darin, dass die Methode sofort zurückkehrt, während der Kopiervorgang im Hintergrund beginnt, während sich mehrere CopyHere () - Aufrufe gegenseitig stören und die ZIP-Datei nicht korrekt erstellt wird. Eine Warteschleife wird hier benötigt, um das zu beheben. Meine Warteschleife basiert auf einer Antwort auf ein ähnliches Problem. hier.

Hier ist eine aktualisierte Version, die den von pihentagy gemeldeten Fehler "Objekt erforderlich" behebt. Es ist ein Zeitproblem, da die neu erstellte ZIP-Datei in der Elementsammlung enthalten ist, wenn das Skript auf schnellen Computern ausgeführt wird.

set Args = WScript.Arguments
source = Args(0)
' remove trailing slashes as we add slashes when needed later
while Right(source, 1) = "\"
    source = Mid(source, 1, Len(source) - 1)
wend

target = Args(1)

' create empty ZIP file
set fso = CreateObject("Scripting.FileSystemObject")
set zip = fso.OpenTextFile(target, 2, vbtrue)
' write ZIP header, this ensures that Windows recognizes the file as "ZIP Folder"
zip.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
zip.Close
set zip = nothing
set fso = nothing

' copy files to ZIP file
set app = CreateObject("Shell.Application")

set sourceFolderObj = app.NameSpace(source)
set targetFolderObj = app.NameSpace(target)

for each item in sourceFolderObj.Items
  itemPath = source & "\" & item.Name

  copyItem = false

  ' ZIP file is included in Items collection and is recognized as folder, thus skip it to avoid script errors
  if itemPath <> target then
    if item.IsFolder then
      if item.GetFolder.Items().Count = 0 then
        ' folder is empty, skip it as empty folders can't be compressed
      else
        copyItem = true
      end if
    else
      copyItem = true
    end if
  end if

  if copyItem then
    targetFolderObj.CopyHere item

    ' wait until the file appears in the ZIP file, 
    ' this is needed because CopyHere() returns immediately after starting an asynchronous copy process 
    ' (starting multiple asynchronous copy will not work as it causes error messages, an invalid ZIP file, ...)
    while (targetFolderObj.ParseName(item.Name) is nothing)
      WScript.Sleep 1
    wend
  end If
next

set targetFolderObj = nothing
set sourceFolderObj = nothing
set app = nothing
 2
Author: ViRuSTriNiTy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:24

Hier ist eine weitere Idee, aus 4 verschiedenen Quellen; nicht meine Ideen, aber ich kompiliert habe, Sie zu machen es Arbeit für mich

<!-- : Begin batch script
@each off

set sourceFolder="c:\test"
set destZip="%userprofile%\desktop\example.zip"

cscript //nologo "%~f0?.wsf" //job:exewsh %sourceFolder% %destZip%

exit /b
GOTO:EOF
----- Begin wsf script --->
<package><job id="exewsh"><script language="VBScript">
'Get command-line arguments.
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)

'Create empty ZIP file.
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)

Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)

'Required!
wScript.Sleep 2000
</script></job>
</package>
 2
Author: eyeH8bingDotCom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-01-18 22:50:18

Siehe meine Antwort auf Wie komprimiere (/zip ) und entpacke (/ entpacke ) Dateien und Ordner mit Batch-Dateien, ohne externe Tools zu verwenden?

Mit einigen gegebenen Lösungen, die auf fast jedem Windows-Computer funktionieren sollten.

 2
Author: npocmaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-21 02:10:34

Hier ist ein großartiger Link, der zeigt, wie Sie eine Datei mit nativen Windows-Befehlen komprimieren.

Können Sie eine Datei über die Eingabeaufforderung komprimieren, indem Sie NUR die in Windows integrierte Fähigkeit zum Komprimieren von Dateien verwenden?

Ich habe es mit einem Verzeichnis getestet, das mehrere verschachtelte Dateien und Ordner enthält, und es hat perfekt funktioniert. Folgen Sie einfach dem format der Befehlszeile.

Es gibt auch eine Möglichkeit, die Dateien über die Befehlszeile zu entpacken, die ich ebenfalls gefunden habe. Eine Möglichkeit, nur ein Explorer-Fenster zu öffnen zeigt, was der Inhalt der gezippten Datei ist. Einige von ihnen verwenden auch Java, das nicht unbedingt nativ für Windows ist, aber so häufig ist, dass es fast so scheint.

Hat Windows 7 standardmäßig unzip in der Befehlszeile installiert?

Https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line

 1
Author: LostUser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:50

Dies ist eine alte Frage, aber ihre Relevanz ist immer noch aktuell.

Windows hat natürlich einen eigenen Kompressionsalgorithmus, der für die Verwendung von ZIP-Dateien eingebaut ist, aber im Vergleich zum hier gefundenen 7zip-Open-Source-Produkt ist es wirklich schlecht. http://www.7-zip.org/

Andere haben bereits verschiedene Methoden zur Verwendung der integrierten Windows-Funktionen besprochen, meine Lösung erfordert die Installation der zusätzlichen Software.

7Zip unterstützt eine Vielzahl von Dateien, einschließlich ZIP, RAR, CAB und ISO und seinem eigenen 7z-Format.

Sie können die Befehlszeilenhilfe anzeigen: "C:\Program Files\7-Zip\7z.exe" --help -

Um ein einfaches Hinzufügen zum Zip-Archiv durchzuführen:

"C:\Program Files\7-Zip\7z.exe" ein Dateiname.zip c:\path

 1
Author: Dwight Wilbanks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-08-16 06:41:05

Zum Komprimieren von Dateien aus CMD:

compact /c /exe lzx input.txt

(funktioniert auf NTFS-Volumes) Die Dateigröße nach der Komprimierung wird auf CLI dir oder GUI File Properties immer noch gleich angezeigt, der belegte Speicherplatz ist jedoch (6-8 mal) geringer. Binär komprimierte Dateien machen keinen großen Unterschied.

Für das ZIP - Dateiformat von PKWare ist die Komprimierungsrate etwa 4-mal höher als compact (seit dem Testen auf Win 10) und enthält eine Reihe von Komprimierungsalgorithmen wie Deflate, BZip, LZW, LZMA, LZ77, PPMd usw.

Diese technologien sind neuer als die Tage von DOS & CMD und können dennoch über neuere CLI-Tools wie Powershell, JScript, VBScript usw. abgerufen werden.

Für powershell von Win-CMD:

powershell "Compress-Archive input.txt output.zip"

 0
Author: Zimba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-03-17 07:30:52