Batch - 'Umgebungsvariabeln' - Dateiname?

Von: , Frage gestellt am Mi, 28. Apr 2004

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*

3 Antworten zu dieser Frage

  1. Antwort von nach 4 Stunden 1 hilfreich
    Re: Batch - 'Umgebungsvariabeln' - Dateiname?

    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]

    • Antwort von nach 18 Stunden 0 hilfreich
      Merci!

      ... genau das: Zu den Umgebungsvariablen, ein Batch bekommt in der
      Variablen %0 seinen eigenen Aufruf und damit Namen
      mitgeteilt.
      ...hab ich gebraucht. Danke!

  2. Antwort von nach 14 Stunden 0 hilfreich
    Re: Batch - Nachtrag

    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

    :PROG

    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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!