batch

Von Batch zu PowerShell

Written by  on Juli 12, 2016

Ein guter Grund Scripte zu migrieren könnte sein, dass viele Konstrukte einfacher und lesbarer geworden sind.

Es ist eher schwierig auf einen Blick genau zu sagen, was hier für Dateinamen erzeugt werden. Weil scheinbar Strings an festen Positionen zerschnitten werden. Das könnte ausserdem Probleme geben, wenn verschiedene Sprachversionen zum Einsatz kommen:

"%PATH%\%DATE%_%HOUR: =0%.%TIME:~3,2%.%TIME:~6,2%.zip"

Eleganter auf der Powershell

"$PATH\$(get-date -format dd.mm.yyyy_HH.mm.ss).zip"

Batch Script und die Prozentzeichen

Written by  on November 25, 2015

Ich hab mich wieder Mal über ein Script geärgert.
Folgendes Beispiel hat beim Testen auf der Shell wunderbar funktioniert

C:\tmp\test>for /f %f in ('dir *.txt') DO echo %f
Datei nicht gefunden

C:\tmp\test>echo Volume
Volume

C:\tmp\test>echo Volumeseriennummer:
Volumeseriennummer:

C:\tmp\test>echo Verzeichnis
Verzeichnis

Das macht Output mit dem Befehl zwischen den einfachen Anführungszeichen.
Also ab in ein Script damit und nochmal ausgeführt

C:\tmp\test>test

Was? Kein Output – sollte das Script nicht das gleiche tun, wie wenn die Zeile auf der Shell geschrieben geht?
Eine kleine Änderung im Script – %f wird mit %%f ersetzt:

for /f %%f in ('dir *.txt') DO echo %%f

Und jetzt kommt aus dem Script das gleiche raus, wie vorher auf der Commandline:

C:\tmp\test>test

C:\tmp\test>for /F %f in ('dir *.txt') DO echo %f
Datei nicht gefunden

C:\tmp\test>echo Volume
Volume

C:\tmp\test>echo Volumeseriennummer:
Volumeseriennummer:

C:\tmp\test>echo Verzeichnis
Verzeichnis

Quelle und Erklärung bei Stackoverflow