Springe zum Inhalt

Auf der Suche nach einer bestimmten Syntax für Batch-Dateien stieß ich vor kurzem auf folgenden Schnipsel:

NET USE | FIND "X:" > TEMP.BAT
>> OK.BAT ECHO SET UNC=%%2
CALL TEMP.BAT
IF NOT "%UNC%"=="" ECHO UNC for drive X: is %UNC%

Zum einen fällt erst einmal die ungewöhnliche Verwendung der Ausgabeumleitung am Anfang der Zeile auf. Warum wird aber durch das Beispiel eine Datei OK.BAT erstellt, die anscheinend nirgendwo aufgerufen wird?

Der Trick ist der, dass durch die allererste Zeile eine Batch-Datei TEMP.BAT mit einem Inhalt ähnlich

OK X: \\SERVER\FREIGABE Microsoft Windows Network

erstellt wird. Durch den anschließenden Aufruf dieser Batch-Datei wird eine Datei OK.BAT gesucht, die ja kurz zuvor erstellt wurde. Sehr tricky.

Auf der Webseite von Rob van der Woude finden sich viele weiter Beispiele.

Linux kennt für dieses Problem das Kommando "which". Unter Windows existiert solch ein Kommando leider nicht, kann aber leicht CMD-Mitteln nachgestellt werden.

Läuft ab Windows XP:

 @for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

Einfach im Pfad als z.B. which.bat speichern.

Quelle