Wie kann ich einen Batchjob (.bat) erstellen, der einen Ordner komprimiert?

Wie kann ich einen Batchjob (.bat) erstellen, der einen Ordner komprimiert?

Von 7zip habe ich das Kommandozeilentool 7za.exe heruntergeladen und habe folgendes Skript:

echo off

cls

set zip ="C:\7za.exe"

set filename="%date%.backup.zip"

set pathtobackup="C:\MyDocs"

%zip% -t7z %filename% %pathtobackup%\*.doc

Ich möchte alle Doc-Dateien im Ordner „MyDocs“ (einschließlich Unterordner) sichern und in einer datierten Zip-Datei speichern. Anschließend werde ich diese Datei mit Robocopy auf meinen Server verschieben, habe aber im Moment einige Probleme, die Dateien zu zippen.

Hat jemand eine Ahnung? Kann ich der Datei trotzdem auch ein Passwort anhängen?

Antwort1

Verwenden Sie die Syntax

7z a -tzip archive.zip -r src\*.cpp src\*.h

In Ihrem Fall wäre es also

7z a -t7z %filename% -r %pathtobackup%\*.doc

Quelle:http://sevenzip.sourceforge.jp/chm/cmdline/switches/recurse.htm

Antwort2

Installieren Sie 7z und Sie können dieses funktionierende Beispiel mit einem Löschskript für Dateien verwenden, die älter als 7 Tage sind. Dieses Skript komprimiert die Dateien aus dem angegebenen Eingabeordner in den Ausgabeordner. Um Ordner zu komprimieren, müssen Sie /d hinzufügen oder um alle Dateien im Ordner zu komprimieren, ändern Sie einfach das letzte „%%X“.

REM This is a batch script to zip files in folder or add /d to zip folders.
REM This script is using 7z to zip files, installation is required - "[http://www.7-zip.org/a/7z938-x64.msi][1]"
REM Remember to point 'do' to 7z installed path 7z.exe

SET input1=D:\Backup\SampleFolder
SET input2=D:\Backup\SampleFolder2

SET output1=C:\ZipBackups\SampleFolder
SET output2=C:\ZipBackups\SampleFolder2

CD /d %input1%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output1%\%%X.zip" "%%X"
FORFILES /P "%input1%" /M *.* /D -8 /C "cmd /c del @file"

CD /d %input2%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output2%\%%X.zip" "%%X"
FORFILES /P "%input2%" /M *.* /D -8 /C "cmd /c del @file"

Antwort3

Ich habe dafür eine einfache Lösung gefunden. Angenommen, Sie haben mehrere Unterordner, die in einem Ordner komprimiert werden sollen. In diesem Fall: 1. Laden Sie die 7zip-Software herunter und installieren Sie sie. Kopieren Sie dann 7z.exe in den jeweiligen Ordner, in den Sie Ihre Unterordner komprimieren möchten.

Kopieren Sie in einen Notizblock Folgendes, fügen Sie es ein und speichern Sie es als .bat-Datei:

cd "your_Folder_path" for /d %%f in (*) do (7z a -t7z %%f.7z "your_Folder_path\%%f")

Mit einem Doppelklick wird die Datei ausgeführt.

Falls Sie die Originalordner löschen möchten, fügen Sie vor der schließenden Klammer Folgendes hinzu:

rd /s /q "your_Folder_path\%%f"

Antwort4

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%day%_%month%_%year%___%hour%_%min%_%secs%

echo datetimef=%datetimef%


path %path%;"C:\Program Files\7-Zip"

verwandte Informationen