WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.08.2005, 19:58   #1
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Frage 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...

Vielen Dank für Eure Hilfe & lg,
revell
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Alt 03.08.2005, 23:33   #2
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Ü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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 04.08.2005, 10:16   #3
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Standard

???
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Alt 04.08.2005, 11:31   #4
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von Flink

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

Das ist unter LINUX allerdings $1.


Und für Windows müssen die Pfade natürlich anders lauten: C:\\ordner1\ordner2
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 04.08.2005, 12:41   #5
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Standard

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.
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Alt 04.08.2005, 13:07   #6
Preacher
Inventar
 
Registriert seit: 20.10.2003
Ort: Celovec / Klagenfurt
Alter: 48
Beiträge: 2.559

Mein Computer

Preacher eine Nachricht über ICQ schicken
Standard

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.
____________________________________
Bei Problemen zwei Griffe ranschweißen und aus dem Fenster .....
Preacher ist offline   Mit Zitat antworten
Alt 04.08.2005, 14:47   #7
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Standard

Ich verstehe noch nicht ganz wie du zunächst auf %1% kommst; also dieses definierst? Der Rest ist klar. Danke!
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Alt 04.08.2005, 15:41   #8
Preacher
Inventar
 
Registriert seit: 20.10.2003
Ort: Celovec / Klagenfurt
Alter: 48
Beiträge: 2.559

Mein Computer

Preacher eine Nachricht über ICQ schicken
Standard

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
____________________________________
Bei Problemen zwei Griffe ranschweißen und aus dem Fenster .....
Preacher ist offline   Mit Zitat antworten
Alt 04.08.2005, 17:17   #9
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Standard

Danke schön!
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Alt 04.08.2005, 22:07   #10
revell
Inventar
 
Registriert seit: 20.04.2000
Beiträge: 1.616


Standard

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.
____________________________________
IF käse = löcher
mehr käse = mehr löcher
mehr löcher = weniger käse
THEN weniger käse = mehr käse

Signatur verwirrt...
revell ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:12 Uhr.


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