Windows 2003 Shell Scripting

Scripts zur System- und Dateiverwaltung

Makros erstellen

In der täglichen Praxis würden wir keine Befehlszeile dieser Länge immer wieder per Hand eingeben. Als Alternative bietet sich ein Makro an. Möchten Sie diese Funktion allerdings von anderen Shell Scripts aus nutzen, funktioniert ein Makro bekanntlich nicht. Daher an dieser Stelle der Code für ein Shell Script nicenum.bat, mit dem Sie das gleiche Ergebnis erhalten.

@echo off
:: nummerieren einer als Parameter übergebenen
:: Textdatei ohne eckige Klammern

find /n /v "@@@@@" < %1 > %temp%\tmp.txt

for /F "tokens=*" %%f in (%temp%\tmp.txt) do call
:procline "%%f"

goto :eof

:procline
set line=%~1
set line=%line:]= %
set line=%line:[=%
echo %line%

Beachten Sie im Code die Verdopplung der Prozentzeichen bei der Variablen für die for-Schleife. Durch die zeilenweise Abarbeitung der Batch-Engine kommen wir an dieser Stelle auch ohne verzögerte Variablenexpansion aus und können die gewohnten Prozentzeichen für die Variablen benutzen. Da wir in diesem Beispiel den Output des find-Kommandos im temp-Verzeichnis ablegen, kann auch auf das Backquoting verzichtet werden, und durch die Modularisierung über den Aufruf per call :label wird das Shell Script auch übersichtlicher.

Entscheiden Sie selbst, welcher der beiden Ansätze für Sie sinnvoller ist. Sollten Sie auf einer IT-Party in einer dieser „Windows hat keine Shell“-Diskussionen verwickelt werden, kritzeln Sie einfach die Befehlszeilenversion auf eine Serviette, und die Diskussion ist beendet ...