WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Pfad als Variable in batch (http://www.wcm.at/forum/showthread.php?t=171161)

revell 03.08.2005 19:58

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

Flink 03.08.2005 23:33

Übergib es einfach als Argument in der Kommandozeile:

Code:

kommando.script /var/www
Im Skript verwendest du
Code:

echo %1/html/dummy.txt
%1 ist ein Platzhalter für den ersten Parameter.

revell 04.08.2005 10:16

???

Flink 04.08.2005 11:31

Zitat:

Original geschrieben von Flink

%1 ist ein Platzhalter für den ersten Parameter.

:eek:
Das ist unter LINUX allerdings $1.


Und für Windows müssen die Pfade natürlich anders lauten: C:\\ordner1\ordner2

revell 04.08.2005 12:41

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. :(

Preacher 04.08.2005 13:07

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.

revell 04.08.2005 14:47

Ich verstehe noch nicht ganz wie du zunächst auf %1% kommst; also dieses definierst? Der Rest ist klar. Danke!

Preacher 04.08.2005 15:41

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

revell 04.08.2005 17:17

Danke schön!

revell 04.08.2005 22:07

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag