Batch Shell Frage
Frage zu Batch & Shell
Hallo Community,
ich möchte wirklich gerne von euch wissen,wie ich eine Batch-Datei schreiben, die mir jeden Samstag einen neueren stand der .vhd extra eine kopie macht oder so und nicht immer die alte überschreibt wie mache ich das nun?
Würdet Ihr mir ggf. helfen? wäre echt nett, hier mein Script zum drüber schauen, was muss ich ändern? Möchte das 4 Sicherungen in Monat gemacht werden, also Jeden Samstag eine. Es sollte nahc möglichkeit keine überschrieben werden wie gehe ich vor & wie kann ich diese dann als Aufgabe einplanen, damit dies läuft ohne angemeldet zu sein?
REM Hyper-V Virtual Machine Backup
REM Shutdown virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Stop.txt 1
REM Copy virtual machines, /Y overwrites the file if it already exists
copy /Y "D:\Programme\Hyper-V\Virtual Hard DisksFABONS002.vhd" "E:\Backup\FABONS002\FABONS002.vhd"
"
REM Power on virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Start.txt 0
REM Finished!
Vielen Dank im vorraus, möchte nicht nerven!
Sorry
Hallo Community,
ich möchte wirklich gerne von euch wissen,wie ich eine Batch-Datei schreiben, die mir jeden Samstag einen neueren stand der .vhd extra eine kopie macht oder so und nicht immer die alte überschreibt wie mache ich das nun?
Würdet Ihr mir ggf. helfen? wäre echt nett, hier mein Script zum drüber schauen, was muss ich ändern? Möchte das 4 Sicherungen in Monat gemacht werden, also Jeden Samstag eine. Es sollte nahc möglichkeit keine überschrieben werden wie gehe ich vor & wie kann ich diese dann als Aufgabe einplanen, damit dies läuft ohne angemeldet zu sein?
REM Hyper-V Virtual Machine Backup
REM Shutdown virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Stop.txt 1
REM Copy virtual machines, /Y overwrites the file if it already exists
copy /Y "D:\Programme\Hyper-V\Virtual Hard DisksFABONS002.vhd" "E:\Backup\FABONS002\FABONS002.vhd"
"
REM Power on virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Start.txt 0
REM Finished!
Vielen Dank im vorraus, möchte nicht nerven!
Sorry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160819
Url: https://administrator.de/contentid/160819
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
22 Kommentare
Neuester Kommentar
Hallo,
damit die einzelnen Sicherungen nicht überschrieben werden solltest du unterschiedliche Dateinamen für die Sicherungen verwenden.....das einfachste ist du baust das aktuelle Datum ein. Der Vorteil dabei ist du siehst auch gleich von wann die Sicherung ist.
Damit das ganze dann jeden Samstag startet kannst du das Script als Aufgabe in der Aufgabenverwaltung hinterlegen.
damit die einzelnen Sicherungen nicht überschrieben werden solltest du unterschiedliche Dateinamen für die Sicherungen verwenden.....das einfachste ist du baust das aktuelle Datum ein. Der Vorteil dabei ist du siehst auch gleich von wann die Sicherung ist.
Damit das ganze dann jeden Samstag startet kannst du das Script als Aufgabe in der Aufgabenverwaltung hinterlegen.
Aloha,
dein Datum erinnert mich an VBS ;)
Vielleicht gefällt dir %date% ja besser =)
greetz André
Edit: du willst ja es etwas anders wie ich sehe
EDIT²: Äh zu spät editiert, der Biberle war schneller *grml* ^.^
dein Datum erinnert mich an VBS ;)
Vielleicht gefällt dir %date% ja besser =)
greetz André
Edit: du willst ja es etwas anders wie ich sehe
REM TT.MM.JJJJ soll zu JJJJMMTT
FOR /f "tokens=1-3 delims=." %%a in ("%date%") do Set Datum=%%c%%b%%a
EDIT²: Äh zu spät editiert, der Biberle war schneller *grml* ^.^
Moin Pozelei,
willkommen im Forum.
Du vermischt in deinem Schnipsel Batchsprachelemente und VBSkript-Bröckchen.
Wenn du das für den CMD-Interpreter abgreifbare Datum über die Umgebungsvariable %date% umformatieren willst, ginge es so:
[Demo am CMD-Prompt]
Wenn "dein" %date% anders aussieht, muss die Umformatiererei etwas angepasst werden.
Und wenn du dann irgendwas Brauchbares in deiner Variable %myDate% stehen hast, dann
STREICHE
SETZE
Grüße
Biber
willkommen im Forum.
Du vermischt in deinem Schnipsel Batchsprachelemente und VBSkript-Bröckchen.
Wenn du das für den CMD-Interpreter abgreifbare Datum über die Umgebungsvariable %date% umformatieren willst, ginge es so:
[Demo am CMD-Prompt]
>echo %date%
15.02.2011
>for /f "delims=. tokens=1-3" %i in ("%date%") do @echo set "mydate=%k%j%i"
set "mydate=20110215"
Und wenn du dann irgendwas Brauchbares in deiner Variable %myDate% stehen hast, dann
STREICHE
ren "E:\Backup\FABONS002\FABONS002.vhd" "E:\Backup\FABONS002\FABONS002&datum.vhd"
SETZE
ren "E:\Backup\FABONS002\FABONS002.vhd" "FABONS002%mydate%.vhd"
Grüße
Biber
Aloha,
joa, ohne for-Schleife = kein set mydate möglich ;)
Biberles Auszug war aus dem Prompt =) aber einbauen musst du
for /f "delims=. tokens=1-3" %%i in ("%date%") do set "mydate=%%k%%j%%i"
greetz André
P.S.: Warum überhaupt das ren? Kopiere doch gleich nach [Pfad\Datei%mydate%.Dateiendung]
Aloha,
Anmerkung: Habe dein ren gestrichen, mir ergibt sich der Sinn nicht (und ein _ mit eingefügt, sieht doch besser aus als der reine Zahlensalat)
greetz André
edit: fehlendes \ hinzugefügt
@echo off & setlocal
REM Hyper-V Virtual Machine Backup
REM Shutdown virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Stop.txt 1
REM Datum TT.MM.JJJJ wird zu JJJJMMTT
for /f "delims=. tokens=1-3" %%i in ("%date%") do set "mydate=%%k%%j%%i"
REM Copy virtual machines, /Y overwrites the file if it already exists
copy "D:\Programme\Hyper-V\Virtual Hard Disks\FABONS002.vhd" "E:\Backup\FABONS002\FABONS002_%mydate%.vhd"
REM Power on virtual machines
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\scripts\vmbackup\StartStopVms.ps1 c:\scripts\vmbackup\FABONS002Start.txt 0
echo Finished!
pause
Anmerkung: Habe dein ren gestrichen, mir ergibt sich der Sinn nicht (und ein _ mit eingefügt, sieht doch besser aus als der reine Zahlensalat)
greetz André
edit: fehlendes \ hinzugefügt
Moin Pozelei,
ich kann zwar deine Fehlerbeschreibung nicht deuten, aber es sollte doch möglich sein, nur die beiden Befehle in Zeile 08 und Zeile 11 einzeln am CMD-Prompt oder inem proof-of-concept-Batch zu testen.
Da kann doch begrenzt wenig schiefgehen.
Ob nun davor und danach VMs gestartet oder Säcke mit Reis gestapelt werden... das hat doch mit dem Datumsumgefriemele nichts zu tun...
Grüße
Biber
ich kann zwar deine Fehlerbeschreibung nicht deuten, aber es sollte doch möglich sein, nur die beiden Befehle in Zeile 08 und Zeile 11 einzeln am CMD-Prompt oder inem proof-of-concept-Batch zu testen.
Da kann doch begrenzt wenig schiefgehen.
Ob nun davor und danach VMs gestartet oder Säcke mit Reis gestapelt werden... das hat doch mit dem Datumsumgefriemele nichts zu tun...
Grüße
Biber
Aloha,
am einfachsten mit delage32, der zwar mit Tagen arbeitet aber 28 Tage sind ja bekanntlich auch 4 Wochen =)
Sprich:
Dokumentation hier zu finden
greetz André
am einfachsten mit delage32, der zwar mit Tagen arbeitet aber 28 Tage sind ja bekanntlich auch 4 Wochen =)
Sprich:
"Laufwerk\Pfad_zur\delage32.exe" "Laufwerk\Pfad_der_zu_löschenden_Datei" 28 /parameter_siehe_Dokumentation
greetz André
Aloha,
nur als Hinweis: Du solltest keine Datei angeben, sondern ein Verzeichnis ... und mit %mydate% ist beim Löschen schonmal gar nicht gut Kirschen essen - lies dir am Besten nochmal die Doku dazu durch und teste es irgendwo mit Testordnern & Dateien.
Learning by doing, man muss ja nicht alles vorkauen =) jedenfalls nicht solch simple Sachen
greetz André
nur als Hinweis: Du solltest keine Datei angeben, sondern ein Verzeichnis ... und mit %mydate% ist beim Löschen schonmal gar nicht gut Kirschen essen - lies dir am Besten nochmal die Doku dazu durch und teste es irgendwo mit Testordnern & Dateien.
Learning by doing, man muss ja nicht alles vorkauen =) jedenfalls nicht solch simple Sachen
greetz André
Aloha,
nur Dateien, die älter als die angegebenen Tage sind [das Verzeichnis dürfte ja immer jünger und nicht leer sein ...] (ich ging davon aus, dass dort auch nur diese Backups .vhs drin sind dann) - ansonsten könntest du auch
versuchen (ich sehe schon, du hast die Dokumentation (klick mich) immernoch nicht gelesen ...)
greetz André
P.S: Ohne Parameter wie /created oder /modified bin ich mir nicht 100% sicher, ob da viel passieren wird ... ansonsten /subonly kommt auch oftmals gut
P.P.S.:
nur Dateien, die älter als die angegebenen Tage sind [das Verzeichnis dürfte ja immer jünger und nicht leer sein ...] (ich ging davon aus, dass dort auch nur diese Backups .vhs drin sind dann) - ansonsten könntest du auch
"C:\delage32\delage32.exe" "E:\Backup\FABONS002\FABONS002_*.vhd" 28
greetz André
P.S: Ohne Parameter wie /created oder /modified bin ich mir nicht 100% sicher, ob da viel passieren wird ... ansonsten /subonly kommt auch oftmals gut
P.P.S.:
DelAge32 löscht Dateien, und entfernt gegebenenfalls leere Ordner. DelAge32 wurde nicht konzipiert, um Verzeichnis-Strukturen in Abhängigkeit von der Alter des Ordners (unabhängig vom Alter der enthaltenen Dateien) zu löschen.
Zitat von @Pozelei:
PS: Kannst du mir ne seite zum lernen von Powershell empfehlen, soll demnächst die batch direkt in eine Powershell einbinden
damit man nicht unnötig eine *bat bzw *cmd file hat!
PS: Kannst du mir ne seite zum lernen von Powershell empfehlen, soll demnächst die batch direkt in eine Powershell einbinden
damit man nicht unnötig eine *bat bzw *cmd file hat!
Aloha,
nope, kann ich nicht - nutze ich nicht brauche ich nicht
Aber, wenn die Sache hier von der Thematik her geklärt ist, kannst du ja mal Wie kann ich einen Beitrag als gelöst markieren?.
greetz André