batch
Von Batch zu PowerShell
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
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