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...
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.
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
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 - !
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
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
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
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>
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.
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.
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
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
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"
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