![]() |
Pfad als Variable in batch
Hallo Alle,
Ich habe einen kleinen Batch geschrieben, den ich jetzt auf einem anderen System einsetzen möchte. Natürlich sind dort alle Pfade anders, also hab ich mir überlegt den Batch ein bißchen umzuschreiben um seine Portabilität zu erhöhen. Ich hab zunächst daran gedacht zu Beginn des Batches alle Pfade als Variablen zu definieren. (Ein Hauptverzeichnis und mehrere Unterverzeichnisse darin) bzw. müßte ich nur das Hauptverzeichnis als Variable einsetzen, da die Unterverzeichnisse ja immer gleich bleiben. Somit müßte ich auf jedem anderen System nur noch das Hauptverzeichnis editieren und dann läuft der Batch auch dort. (Sehr cool wäre wenn ich die Pfade aus einer Textdatei extrahieren könnte. Dann wäre das Ändern überhaupt noch leichter!) Einziges Problem ist: ich hab keine Ahnung wie das geht... :rolleyes: Vielen Dank für Eure Hilfe & lg, revell |
Übergib es einfach als Argument in der Kommandozeile:
Code:
kommando.script /var/www Code:
echo %1/html/dummy.txt |
???
|
Zitat:
Das ist unter LINUX allerdings $1. Und für Windows müssen die Pfade natürlich anders lauten: C:\\ordner1\ordner2 |
Also tut mir echt leid, aber ich versteh immer noch nicht wirklich, was ich nun machen muss um in einem batch unter WinXP (!) einem Pfad eine Variable zuzuweisen und diese dann wieder bei Badarf aufzurufen. :(
|
Du kannst eiem Batch auch Parameter übergeben.
z.B. meinbatch.bat "c:\mein Verzeichnis\Daten" Im batch kannst Du dann z.B. in dieses Verzeichnis wechseln, wenn Du "cd %1%" eingbist, %1% steht als Platzhalter für die erste Variable nach dem Befehl. Weitere Parameter definieren geht mit z.B.: set bilder=%1%\Bilder Die Variable "Bilder" enthält dann den Wert "c:\mein Verzeichnis\Daten\Bilder". Verwenden kann man die Variable wieder mit z.B.: cd %Bilder% Ich würde der Batch-Datei aber die Werweiterung ".cmd" geben, d.h. diese wird mit dem NT Kommandoprozessor CMD.exe ausgeführt, welcher einige Funktionen mehr bietet als der Prozessor comand.com. |
Ich verstehe noch nicht ganz wie du zunächst auf %1% kommst; also dieses definierst? Der Rest ist klar. Danke!
|
Der Parameter, der hinter dem Aufruf der Batch steht, wird zur Laufzeit in die Variable %1% übernommen.
Geht auch so weiter: Wenn z.B. Meinbatch.cmd Parameter1 Parameter2 Parameter3 Parameter4 aufgerufen wird, dann hat zur Laufzeit des Batch %1%=Parameter1 %2%=Parameter2 %3%=Parameter3 %4%=Parameter4 Wenn ein Parameter Leerzeichen (wie z.B. ein Verzeichnis) enthält, dann muss dieser in Anführungszeichen gesetzt werden. Mach Dir mal ein Batch, wo Du folgendes reinschreibst: @echo off echo %1% echo. echo. echo %2% Ruf dann den bacht so auf: test.cmd "Zeile mit Parameter 1" "Zeile mit Parameter 2" Und dann siehst Du das Ergebnis |
Danke schön!
|
Also, soweit scheint alles zu funktionieren. Auch wenn ich mit dem testen noch nicht ganz fertig bin.
ABER: gibts eine Möglichkeit den Wert einer Variablen aus einer anderen Datei auszulesen und wenn ja welchen? Dann könnte ich in einer Textdatei alle Variablen definieren und einfach ändern, ohne den eigentlichen Batch modifizieren zu müssen. |
Versuchs mit
Code:
for /f "tokens=1,* delims==" %%i in ('find "Variable1" .\variable.txt') do ( Variable1=hallo Variable2=etwas Variable3=nix |
Der batch führt bei mir zu folgendem Resultat:
Code:
---------- .\VARIABLE.TXT Da ich nicht weiß,wie ich Variablen für mein ganzes Projekt in einer eigenen Datei zentral definieren kann hab ich mir mit einem kleinen Workaround-Schummler geholfen. Ich hab alle Variablen in einem Batch definiert und von dort dann einen zweiten Batch (den eigentlichen) mit Parametern aufgerufen. So hab ich das Problem zum Teil bewältigt. (Ich weiß, dass das nicht wirklich sinnvoll ist, aber anders kann ich es leider nicht :() Das Problem ist nur (neben völliger Ineffizienz), dass ich dann auf 9 Variablen limitiert bin und das würde ich gerne vermeiden. Ich weiß zwar, dass ich mir mit dem SHIFT Befehl helfen könnte, aber dann wird das Ganze endgültig zu kompliziert... Also, zurück zum eigentlichen Problem und desesn Lösung: Wie kann ich Variablen aus einer zentralen Datei in einen Batch übernehmen. (Ich hab's auch mit Umleiten probiert, das hat aber auch nicht wirklich funktioniert...) |
Upps str vergessen :) :
Code:
D:\dos>type variable.txt |
Das hat leider auch icht funktioniert. Ich hab aber weiter gelesen, gesucht und ausprobiert und bin zu folgendem Ergebnis gekommen:
Code:
@echo off Hab's zwar noch nicht in meinem eigentlichen Batch getestet, aber eigentlich müßte es so fuktionieren (hoff ich)... :) Zwei Fragen hätt ich aber noch: 1. Wozu dient der Parameter "/f"? 2. Was sollte ich bezüglich dem Löschen von Variablen wissen? |
Noch eine Frage, die bei meinen Recherchen und meinem immer schöneren Projekt ;) aufgetaucht ist:
Gibt's eine Möglichkeit den aktuellen Pfad auszulesen? |
Code:
for /F "tokens=*" %%d in ('cd') do set MEIN_PFAD=%%d |
Natürlich, ;) Danke!
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag