Ich habe eine Batch-Datei, die eine Textdatei ausgibt. Ich dachte, es wäre schön, wenn ich es auch reißen könnte.
Dies wird in einer unkontrollierten Umgebung verwendet, sodass ich keine Vermutungen über das Vorhandensein von Softwareprodukten von Drittanbietern wie 7-Zip usw. anstellen kann. Dazu muss die jetzt in Windows integrierte Funktion zum Komprimieren von Dateien verwendet werden.
windows
command-line
batch
zip
Aaron Bush
quelle
quelle
powershell.exe Compress-Archive file-to-zip.txt zippedfile.zip
(es funktioniert auch mit Ordner)Antworten:
Hier ist eine All-Batch-Dateilösung (eine Variante meiner anderen Antwort), mit der eine Datei mit dem Namen komprimiert
c:\ue_english.txt
und abgelegt wirdC:\someArchive.zip
:Schreibzugriff ist auf das übergeordnete Element des Ordners erforderlich, in dem gespeichert ist
TEMPDIR
. Da dies häufig nicht der Fall ist, muss das Stammverzeichnis von Laufwerk CTEMPDIR
möglicherweise geändert werden.Schreibzugriff ist auch für den Ordner erforderlich, in dem sich das
.bat
Skript befindet (da dort eine Datei generiert wird).Beachten Sie auch, dass die Dateierweiterung für die komprimierte Datei sein muss
.zip
. Der Versuch, eine andere Erweiterung zu verwenden, kann zu einem Skriptfehler führen. Generieren Sie stattdessen die.zip
Datei und benennen Sie sie um.quelle
write-zip
zeiliges Beispiel , aber es gibt auch ein Cmdlet, das von der Pscx heruntergeladen werden kann .TEMPDIR
? Ich denke, Ihre Absicht ist es, die DateiFILETOZIP
in einen Ordner zu packen, oder?Es ist möglich, Dateien ohne Installation zusätzlicher Software zu komprimieren (ich habe es getestet). Die Lösung ist:
Führen Sie dies in einem Befehlszeilenfenster aus, um eine ZIP-Datei mit dem Namen zu erstellen,
C:\someArchive.zip
die alle Dateien im Ordner enthältC:\test3
:Wo Datei
zip.vbs
enthält:Ich habe es nicht auf Pfade und Dateinamen getestet, die Leerzeichen enthalten. Es kann funktionieren, wenn die Befehlszeilenparameter in Anführungszeichen gesetzt werden.
So funktioniert es: Die integrierte Zip-Funktionalität in Windows (Windows XP und höher?) Wird über COM- Schnittstellen von der Windows-Shell explorer.exe verfügbar gemacht - das ist der Teil "Shell.Application". Diese COM-Schnittstelle kann von einem VBScript- Skript aus verwendet werden, da ein solches Skript auf COM-Komponenten zugreifen kann. Damit das Skript vollständig in sich geschlossen ist, wird zunächst eine leere ZIP-Datei erstellt (Sie können auch eine leere ZIP-Datei erstellen und diese zusammen mit dem VBScript-Skript auf das Zielsystem kopieren).
VBScript wurde seit Windows 98 standardmäßig in jeder Desktop-Version von Microsoft Windows installiert.
CScript.exe
ist ein Teil von Windows Script Host . Windows Script Host wird standardmäßig unter Windows 98 und höheren Versionen von Windows verteilt und installiert. Es wird auch installiert, wenn Internet Explorer 5 (oder eine neuere Version) installiert ist.quelle
Wenn Sie bereit sind , PowerShell zu verwenden , stehen in .NET 2.0 Zip-Funktionen zur Verfügung (PowerShell ist .NET). Hier ist ein Beispiel ( Quelle ) für Mike Hodnick :
quelle
Sie können das Risiko einer Zeitüberschreitung während der Komprimierung beseitigen, indem Sie das Vorhandensein des Komprimierungsdialogfensters abfragen. Diese Methode behandelt auch den Benutzer, der das Komprimierungsfenster verlässt.
quelle
.Sleep(whatever)
" Code-Affen machen mich krank.Wenn Sie die Resource Kit-Tools installieren können, finden Sie ein Befehlszeilentool namens COMPRESS, mit dem komprimierte Archivdateien wie zip erstellt werden können.
quelle
quelle
objShell.NameSpace( ZipFile ).Items.Count
innerhalb der Schleife drucke, ist es immer 0, obwohl die Zip-Datei erstellt wurde und der erwartete Inhalt darin enthalten ist ...Mehrere Dateien / Verzeichnisse mit vereinfachtem Code.
zip.vbs Datei
quelle
Dies ist eine Mutation der akzeptierten Antwort. Ich erledige eine Menge Automatisierungsaufgaben mit bis zu Tausenden von Dateien gleichzeitig, sodass ich nicht nur 2 Sekunden schlafen kann und mich nicht darum kümmere. Ich habe hier die Problemumgehung gefunden , die auch Jiří Kočaras Antwort hier ähnelt .
Dies führt dazu, dass der Zielordner alle 200 ms gepingt wird, was ungefähr so schnell ist, wie Microsoft sagt, um nach FS-Updates zu suchen.
quelle
Hier ist mein Versuch, die integrierten Funktionsfenster für die Komprimierung und Dekomprimierung zusammenzufassen: https://stackoverflow.com/questions/28043589/how-can-i-compres-zip-and-uncopress-unzip-files-and-folder -mit-batch-f
Mit ein paar vorgegebenen Lösungen, die auf fast jeder Windows-Maschine funktionieren sollten.
In Bezug auf die Shell.Application und WSH zog ich die jscript , da es eine Hybrid - batch / JScript - Datei (mit Erweiterung .bat) ermöglicht es, dass nicht Temp erfordern files.I've setzen unzip und Zip - Funktionen in einer Datei plus ein paar mehr Features .
quelle
Wenn Sie unter Windows 8 oder Windows Server 2012 über PowerShell und .NET 4.5 verfügen, können Sie dies folgendermaßen tun:
zip.ps1 (Verwendung :)
-directory <directory to zip up> -name <zip name>
:zip.bat (wenn Sie einen Helfer benötigen, um PowerShell für Sie aufzurufen, ist das Verzeichnis das erste Argument und der Zip-Name das zweite):
quelle
Windows 10 Build 17063 oder höher ist im Lieferumfang von tar.exe enthalten, das über die Befehlszeile mit zip arbeiten kann.
oder um ein Archiv zu erstellen
quelle
Die Windows-Befehlszeile bietet jetzt den kompakten Befehl, der, soweit ich das beurteilen kann, in Windows integriert ist. Das sollte den gewünschten Anforderungen entsprechen, es sei denn, ich habe etwas verpasst.
quelle
compact
existiert seit XP und ist ein Tool zur Verwaltung der NTFS-Komprimierung