Ich habe eine Batch-Datei, die ich an unsere Kunden verteilen möchte, um eine Softwareaufgabe auszuführen.
Wir verteilen sie als Ordner oder .zip
mit den darin enthaltenen Dateien. Im Inneren befinden sich die Batch-Dateien und ein weiterer Ordner mit den Dateien, die zum Ausführen des Batches benötigt werden.
Normalerweise geben Sie beim Erstellen eines Stapels den Pfad ein, in dem sich die Dateien befinden. Aber ich werde nicht wissen, wo die Dateien sind. Die Dateien werden weiterhin im Hauptordner gespeichert, aber der Stapel muss diesen Ordner finden, damit die Dateien ausgeführt werden können.
Zum Beispiel: Wenn sie den Hauptordner auf dem Desktop haben und ihn ausführen, müsste es so etwas wie "C:\Users\Username\Desktop"
eine Ausführung sein. Sie hätten die Batch-CD an diesem Ort.
Aber was ist, wenn sie es aus Dokumenten ausführen? Ich kenne den Benutzernamen nicht, also muss ich den Stapel irgendwie finden lassen. Jeder Code und / oder jede Anleitung wäre großartig.
Antworten:
Sie müssen nicht wissen, wo sich die Dateien befinden, denn wenn Sie eine Bat-Datei starten, ist das Arbeitsverzeichnis das Verzeichnis, in dem sie gestartet wurde (der "Hauptordner"). Wenn Sie also diese Struktur haben:
Und der Benutzer startet die Datei "mybat.bat". Das Arbeitsverzeichnis lautet ". \ Mydocuments \ folder". Sie müssen also nur den Namen des Unterordners in Ihr Skript schreiben:
Auf jeden Fall wird das Arbeitsverzeichnis in der Variablen "% CD%" gespeichert, und das Verzeichnis, in dem die Fledermaus gestartet wurde, wird im Argument 0 gespeichert. Wenn Sie das Arbeitsverzeichnis auf einem beliebigen Computer kennen möchten, können Sie Folgendes tun:
quelle
Die Antwort von ElektroStudios ist etwas irreführend.
"Wenn Sie eine Bat-Datei starten, ist das Arbeitsverzeichnis das Verzeichnis, in dem sie gestartet wurde." Dies gilt, wenn der Benutzer im Explorer auf die Batch-Datei klickt.
Wenn das Skript jedoch mit dem Befehl CALL von einem anderen Skript aus aufgerufen wird, ändert sich das aktuelle Arbeitsverzeichnis nicht.
Daher ist es in Ihrem Skript besser,% ~ dp0subfolder \ file1.txt zu verwenden
Bitte beachten Sie auch, dass% ~ dp0 mit einem Backslash endet, wenn sich das aktuelle Skript nicht im aktuellen Arbeitsverzeichnis befindet. Wenn Sie also den Verzeichnisnamen ohne nachgestellten Backslash benötigen, können Sie so etwas wie verwenden
quelle
Sie können auch tun
Das berücksichtigt auch das Laufen von einem unbekannten Pfad.
quelle
Versuchen Sie es in Ihrem Stapel
Dadurch sollte die Variable auf den Speicherort Ihres Stapels festgelegt werden.
quelle