CMD Batch - Wiederherstellungspunkt erstellen?
cmd.exe /k "Wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "%DATE%", 100, 7"
cmd.exe /k "Wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "%DATE%", 100, 12"
Was bedeutet die 7 und die 12 am Ende der Commands? Und welche Bedeutung hat die 100?
1 Antwort
Die 7 hat keinerlei Bedeutung und dient lediglich als Dummy für einen Restorepointtype der in keine der Vorgegebenen Kategorien passt.
MODIFY_SETTINGS 12 An application has had features added or removed.
Wirklich wichtig sind die Nummern nicht. Sie geben lediglich an, weshalb der Wiederherstellungspunkt erstellt wird/wurde.
Das cmd /k ist völliger Unsinn in einer Batch. Der Befehl lautet einfach.
wmic /namespace:\\root\default path SystemRestore call CreateRestorePoint "Mein RestorePunkName", 100, 12
...dazu ist zu beachten, dass das Kommandozeilentool WMIC.exe bereits aus einigen Windows 11 versionen entfernt wurde.
benutze besser Powershells Checkpoint-Computer :
Checkpoint-Computer -Description "Irgendein Name" -RestorePointType MODIFY_SETTINGS
Mehr zur Handhabung von Wiederherstellungspunkten in der Kommandozeile findest Du unter:
Demo.cmd
@echo off
chcp 65001 >nul &rem Unicodezeichen wie Umlaute) richtig darstellen
set "RPointName=My DefaultName" &rem defaltinhalt der Variable festlegen, falls beim nachfolgenden Einlesen nur [Enter] gedrückt wird.
set /p "RPointName=Gib den Namen für den Wiederhedtellungspunkt ein :"
wmic /namespace:\\root\default path SystemRestore call CreateRestorePoint "%RPointName%", 100, 12
rem oder besser:
powerShell -ex by -c "& {start PowerShell -a ' -ex by -noe -c "Checkpoint-Computer \"\"\"%RPointName%\"\"\" MODIFY_SETTINGS " ' -verb RunAs}"
pause
Wenn Du statt wmic den powershell-Einzeiler in Deiner Batch verwendest, werden automatisch die nötigen Adminrechte angefordert. siehe nochmal https://www.gutefrage.net/frage/gibts-einen-befehl-um-einen-windows-wiederherstellungspunkt-zu-erstellen#answer-488894733
Abfrage oben schütz allerdings nicht vor unerwünschten Eingaben (wie nur Leerzeichen oder den Zeichen |$<>)
Hier noch eine Eingabe, welche auch mit giftigen Zeichen fertig wird:
demo2.cmd
@echo off
chcp 65001 >nul
set /p "Var=Gib was ein :"
rem ersetze unerwünschte Zeichen durch NICHTS
set "Var=%Var:&=%"
set "Var=%Var:|=%"
set "Var=%Var:<=%"
set "Var=%Var:>=%"
rem entferne zur Probe auch noch alle Leerzeichen
set "Test=%Var: =%"
rem wenn %Test% nix mehr enthält , weise Var einen festgelegten Wert zu
if "%Test%"=="" set "Var=default text"
echo Hier würde irgendein Befehl aufgerufen ... mit "%Var%"
pause
Ich nutze noch Windows 10 auf meinem Main-PC und bin da gerade am Tqeaken mit services und registry. Kann ich den cmd-Scripteine line mit einbringen, wo ich vor jeder Ausführung zur Eingabe des Namens gefragt werde und falls ich keinen Namen eingebe, das dann ein von mir festgelegter Name automatisch eingegeben wird?