kevinmeister
Goto Top

Batch Script für automatisches Zippen eines Ordners

Hallo Zusammen

Da ich nicht so gut im scripten bin und ich ein Script erstellen muss habe ich nun eine Frage an euch..

Kann mir jemand von euch ein Script erstellen, welches einen gewünschten Ordner automatisch zippt. Ebenfalls sollte dazu der Quell und Zielpfad angegeben werden können und eine Funktion welche alles zippt was älter als ... ist.

Vielen Dank im Vorraus!
-Kevin

Content-Key: 563730

Url: https://administrator.de/contentid/563730

Printed on: April 27, 2024 at 03:04 o'clock

Member: SarekHL
SarekHL Apr 08, 2020 updated at 08:41:46 (UTC)
Goto Top
Zitat von @KevinMeister:

Kann mir jemand von euch ein Script erstellen, welches einen gewünschten Ordner automatisch zippt. Ebenfalls sollte dazu der Quell und Zielpfad angegeben werden können und eine Funktion welche alles zippt was älter als ... ist.

Was heißt "angegeben"? Fest in der Batch integriert, oder jedes Mal abgefragt? Wenn jedes Mal abgefragt, warum dann überhaupt eine Batch und nicht der normale Weg?

(Schau sonst mal hier)
Member: KevinMeister
KevinMeister Apr 08, 2020 at 08:52:45 (UTC)
Goto Top
Hallo Sarek

Im Auftrag steht, dass dies jedesmal abgefragt werden soll.. Denke die Batch ist halt einfacher als wenn man jedesmal den normalen Weg braucht

-Kevin
Member: SarekHL
SarekHL Apr 08, 2020 at 08:55:35 (UTC)
Goto Top
Zitat von @KevinMeister:

Im Auftrag steht, dass dies jedesmal abgefragt werden soll.. Denke die Batch ist halt einfacher als wenn man jedesmal den normalen Weg braucht

Und das ganze mit dem in Windows intergrierten ZIP? Oder mit 7ZIP oder WinRAR, die sind da deutlich flexibler.
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 08, 2020 at 08:55:45 (UTC)
Goto Top
Moin,

ich benutze folgendes Script:

' Backup folder using 7-Zip  
' Written by Steve Allison 2014 - steve@allison.im  

Dim fso, rs, shell

' File System Object  
Set fso = CreateObject("Scripting.FileSystemObject")  
' RecordSet  
Set rs = CreateObject("Ador.Recordset")  
' Shell  
Set shell = CreateObject("WScript.Shell")  

Const adVarChar = 200
Const adDate = 7

srcFolder="Quellordnerpfad"  
dstFolder="Zielordnerpfad"  
backupName="backup"  
zipEXE="PfadZu\7za.exe"  

' Number of files to keep  
iNum = 15000

' Get the date in the correct order. Why does vbscript suck so hard at date formatting?  
Function getDateString()
    d = ZeroPad(Day(Now()), 2)
    m = ZeroPad(Month(Now()), 2)    
    y = Year(Now())
    getDateString = y & m & d
End Function

' No printf() in VBScript it seems  
Function ZeroPad(int, length)
	If Len(int) < length Then
		ZeroPad = Right(String(length, "0") & int, length)  
		Else
			ZeroPad = int
	End If
End Function

' Sanity checking  
If Not fso.FolderExists(srcFolder) Then
	Wscript.Echo "Aborted. Source folder does not exist: " & srcFolder  
	Wscript.Quit
End If
If Not fso.FolderExists(dstFolder) Then
	Wscript.Echo "Aborted. Destination folder does not exist: " & dstFolder  
	Wscript.Quit
End If
If Not fso.FileExists(zipEXE) Then
	Wscript.Echo "Aborted. 7-Zip program does not exist: " & zipEXE  
	Wscript.Quit
End If

' Create suffix of date-time  
backupFileDate = getDateString() & "-" & replace(FormatDateTime(now,4),":","")  

' File extension  
backupFileExt = ".7z"  

' Backup path without extension  
backupFilePre = dstFolder & "\" & backupName & "_" & backupFileDate  

' Full backup path  
backupFile = backupFilePre & backupFileExt

' More sanity checking  
n = 1
Do While fso.FileExists(backupFile)
	' Add integeer to file, loop until it doesn't already exist  
	backupFile = backupFilePre & "_" & ZeroPad(n, 2) & backupFileExt  
	n = n + 1
Loop

'''' Zip Source Folder  
' Create shell command  
shCommand = """" & zipEXE & """ a -r """ & backupFile & """"  
' Change to source directory  
shell.CurrentDirectory = srcFolder & "/"  
' Run 7-Zip in shell  
shVal = shell.Run(shCommand,4,true)
'WScript.Echo shCommand  
' Check 7-Zip exit code  
If shVal > 1 Then
	Wscript.Echo "7-Zip failed with error code: " & shVal  
	Wscript.Quit
End If

' Wscript.Echo "Backup complete at " & backupFile  

Du musst Dir nur den Commandline-Packer von 7-zip downloaden.
Member: KevinMeister
KevinMeister Apr 08, 2020 at 09:26:12 (UTC)
Goto Top
Mit welchem Programm spielt eigentlich nicht eine grosse Rolle..
Member: SarekHL
SarekHL Apr 08, 2020 at 09:28:19 (UTC)
Goto Top
Zitat von @KevinMeister:

Mit welchem Programm spielt eigentlich nicht eine grosse Rolle..

Dann hat He-Man Dir ja schon die richtige Antwort gegeben. Ich arbeite eher mit RAR, das ist aber kostenpflichtig.
Mitglied: 138701
138701 Apr 27, 2020 at 12:47:12 (UTC)
Goto Top
7z downloaden, 7z.exe rauskopieren, folgender Befehl läuft super in cmd:
set /p quelle=Quellpfad: 
set /p ziel=Zielpfad: 
set /p zip=Name der Zipdatei: 
7z.exe a -aoa -p123 "%ziel%\%zip%" "%quelle%\*" >nul  
a = Verpacken | x = Entpacken
-aoa = Überschreiben
-p123 = Passwort ist 123
nul = Kein logging