Umgebungsvariable über die CMD erstellen

Unter Windows 7 (und vermutlich auch XP, aber nicht getestet) kann man in der CMS recht simpel Umgebungsvariabeln definieren.
Die Variabeln die man mit set definiert bleiben ja nur, solange man die Session offen hat, wenn man Aber Variabel definieren will die zum einen Länger halten und auch für das komplette System Benutzbar sind, kann man das mit dem Befehl setx machen.
Um eine Umgebungsvariable nur für den aktuellen Benutzer zu erstellen benötigt man keine speziellen Benutzerrechte und kann mit dem folgenden Befehl die Variable erstellen:
setx NAME WERT

Um aber eine Variable für die ganze Maschine zu erstellen muss man Admin-Rechte haben und die CMD auch als Elevated-Process ausführen. Dann kann man ganze einfach mit dem Parameter /M die Variable global erstellen:
setx /M NAME WERT

Energieoptionen über die Shell verwalten

Die Energieoptionen in Windows kann man zum einen über Gruppenrichtlinien verwalten, oder auch über die Shell. Das ganze funktioniert mit dem Befehl powercfg. Um zum Beispiel zu konfigurieren nach welcher Zeit der Bildschirm ausgeschaltet wird, gibt man den folgenden Befehl ein:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
Desktop steht hier für das Schema das geändert werden soll. In Windows XP muss dieser Wert angegeben werden, in Windows 7 wird das aktuelle Schema verwendet, wenn dieser Parameter fehlt. -monitor-timeout-ac definiert die Zeit nach der der Bildschirm im Netzbetrieb ausgeschaltet werden soll. Für den Akkubetrieb muss man -monitor-timeout-dc verwenden. Wenn der Bildschirm nicht ausgeschaltet werden soll, kann man 0 als wert angeben. Wenn man will, dass der Bildschirm nach 20 Minuten ausschaltet, die Festplatte und der ganze Computer im weiter läuft, kann man das folgendermassen konfigurieren:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
powercfg -CHANGE Desktop -disk-timeout-ac 0
powercfg -CHANGE Desktop -standby-timeout-ac 0
powercfg -CHANGE Desktop -hibernate-timeout-ac 0

Tasks mit "at" planen

Bei Windows kann man Tasks ja bekanntlich über die Geplanten Tasks verwalten. Daneben kann man die Tasks aber auch über die CMD mit dem Befehl "at" verwalten. Ein Aufruf von at /? gibt eine kleine Hilfe aus.
Der grosse Vorteil von at ist in meiner Meinung, dass man so auch Tasks auf andern Computern erstellen kann. Dazu gibt man als ersten Parameter den fremden Computer an und wenn die Berechtigungen stimmen, wird der Task erstellt.
at \\computer 23:30 /every:MO "c:\script.bat"


Wenn man nur den fremden Computer als Parameter angibt, erhält man eine Übersicht mit den Tasks, die über at erstellt wurden.
at \\computer
Status-ID   Tag           Zeit          Befehlszeile
-----------------------------------------------------
        1   Jeden Mo      23:30         c:\script.bat

Datum in der CMD anders formatieren

Nochmal etwas aus der CMD-Trickkiste. Mit einem kleinen "Backup-Script" muss ich einen Ordner im Datums-Format YYYY-MM-DD erstellen. Mit der Umgebungsvariable %date% erhält man das Datum aber so zurück: 10.03.2009
Mit dem folgenden Trick kann man das Datum aber ins gewünschte Format umwandeln:
for /f "delims=. tokens=1,2,3" %%a in ('echo %date%') do set datum=%%c-%%b-%%a 

echo %datum%
Das gibt dann 2009-03-10 aus.

Prozess in der CMD beenden

Mit den Bordmitteln von Windows XP und Vista ist es sehr einfach einen Prozess über die CMD oder aus einer Batch datei zu beenden. Dazu kann man den Befehl taskkill benutzen. Mit taskkill /? erhält man eine Übersicht der Parameter und pratischerweise muss man dazu nicht mal die ID des Prozesses wissen. Ein kleines Beispiel:
taskkill /F /IM notepad.exe