Batch - 'Umgebungsvariabeln' - Dateiname?

Hallo!

Ich benutze ein batch-file für eine kleine Installationsroutine. Oft wird dieses aber von Windoof umbenannt, da es nur temporär gespeichert wird (z.B wenn’s direkt aus Winzip oder aus dem IE ausgeführt wird).

Wie kann ich innerhalb des Batch’s rausfinden, was für einen Namen es gerade trägt? D.h. ich weiß nicht, wie es heißt, möchte aber, dass es sich selbst verschiebt und sich wieder seinen „richtigen“ Namen gibt…

Kennt vielleicht einer 'ne Seite, wo’s die ganzen „Umgebungsvariabeln“, Kürzel etc gibt, die man nicht mit SET sieht? Mein googeln ist ohne Erfolg geblieben und ich weiß nichtmal, wie man diese Variabeln/PLatzhalter bei batch nannte. Damals kannte ich solche Ausrücke wie „Umgebungsvariabeln“ noch garnicht… *g*

Hallo …

Zu den Umgebungsvariablen, ein Batch bekommt in der
Variablen %0 seinen eigenen Aufruf und damit Namen
mitgeteilt. In den Variablen %1, %2, … , %n bekommt
er die übergebenen Parameter mitgeteilt.

Ein Lösung müßte ungefähr so aussehen:
Ist aber noch verbesserungsbedürftig!!

IF %0 == "c:\test.bat GOTO ENDE
COPY %0 C:\TEST.BAT
:ENDE

Der Batch kontrolliert seinen eigenen Namen. In diesem
Beispiel „TEST.BAT“. Heißt er nicht so oder befindet
sich in einem anderen Verzeichnis, kopiert er sich selbst
in den Ordner C:\ unter dem Namen „TEST.BAT“.

WICHTIG: Groß- und Kleinschreibung sind hier entscheidend
Wird der Batch mit „Test.BAT“ aufgerufen und die
Prüfung lautet auf „test.bat“ so erkennt er sich nicht
und kopiert sich auf sich selbst.

Eine Umbenennung durch sich selbst auszuführen (REN statt
COPY) scheidet aus, weil sich der Batch dann selbst nicht
mehr findet und die Verarbeitung abbricht.

Gruß Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo …

Hier der komplette Batch.
Beim Starten prüft er seinen Standort und
kopiert sich bei Bedarf wieder an den
richtigen Standort zurück. Danach führt
er das restliche Programm aus.

**@Echo Off
IF „%1“ == „“ GOTO WEITER
DEL %1
GOTO PROG

:WEITER
IF „%0“ == „C:\TEST.BAT“ GOTO PROG
COPY %0 C:\TEST.BAT > NUL
C:\TEST.BAT %0
GOTO ENDE

:stuck_out_tongue:ROG

REM Hier eigenes
REM Programm schreiben

:ENDE**
Du brauchst nur den Beispielnamen „C:\TEST.BAT“ im
Listing (3 mal) durch den richtigen Namen ersetzen.

Funktionsweise:
Beim Aufruf des Batches wird geprüft ob die
Datei „C:\TEST.BAT“ existiert. Wenn JA, dann
wird das eigentliche Programm ausgeführt.
Wenn NEIN, kopiert der Batch sich selbst in
den Standardordner (Im Beispiel C:) und
vergibt sich dabei auch noch seinen richtigen
Namen (TEST.BAT). Anschließend startet er seine
Kopie, übergibt ihr den Aufrufnamen und beendet
sich. Die Kopie erkennt nun, daß sie von einem
Batch aufgerufen wurde und löscht den falschen
Batch. Zu guter Letzt wird das eigentliche Programm
ausgeführt.

Ich hoffe das hilft dir ein wenig

Gruß Franz

Merci!
… genau das:

Zu den Umgebungsvariablen, ein Batch bekommt in der
Variablen %0 seinen eigenen Aufruf und damit Namen
mitgeteilt.

…hab ich gebraucht. Danke!