erik87
Goto Top

syntaxfehler beim übergeben mehrerer variablen

Hallo,

ich habe ein kleines problem mit dem syntax beim variablen übergeben in eine andere Batch-datei.

Ich habe eine batch, dat1.bat, welche mehrere variablen an eine weitere, dat2.bat, übergeben soll. Ist es möglich dies über das programm start zu ermöglichen, sodass ich sie nicht in eine datei speichern und dann in der anderen batch wieder auslesen muss?

Bsp.:
::dat1.bat
@echo off
set a=1
set b=2

start dat2.bat %a% %b%
pause>1
Mit nur einer Variable ist es möglich! habe schon kombinationen mit & , ; | () versucht... hat nicht geklappt ;-(

::dat2.bat
@echo off
echo %a%; %b%
pause>2
Und muss ich hier setlocal delayedexpansions anwenden?
Ich möchte eigentlich in der dat2.bat die variable benutzen, verändern und dann wieder zurück an dat1.bat geben.
Ich habe windows vista, aber kein aktuelles update.

Danke schonmal im vorraus.


gruß, erik

Content-ID: 70631

Url: https://administrator.de/contentid/70631

Ausgedruckt am: 17.11.2024 um 01:11 Uhr

Dani
Dani 10.10.2007 um 19:56:04 Uhr
Goto Top
Hallo Erik,
also ich würde es mal so probieren:
dat1.bat:
@echo off
set a=1
set b=2

start dat2.bat %a% %b%
pause>1
Die dat2.bat sieht ein bisschen anders aus:
@echo off
echo %1
echo %2

pause>2
Die übergebene Variablen werden nacheinander mit %1-%n angesprochen. Sprich es gelten die Variablen von Batch A nicht automatisch in Batch B. Ausnahmen sind die Systemvariablen bzw. glob. Variablen.
So, nun hätten wir mal die Variablen im andern Batch zur Verfügung.

Ich möchte eigentlich in der dat2.bat die variable benutzen, verändern und dann wieder
zurück an dat1.bat geben.
Was genau möchtest du denn in die dat2.bat packen. Funktionen gibt es so nicht wie z.B. in C#!


Grüße
Dani
bastla
bastla 10.10.2007 um 20:01:00 Uhr
Goto Top
Hallo erik87!

Eigentlich sollte dafür ein "call" genügen, also:
@echo off
set a=1
set b=2
call dat2.bat
echo Wieder in dat1: %a%; %b%
Wenn Du in "dat2.bat" kein "setlocal" verwendest, kannst Du dort die Variablenwerte auch verändern:
@echo off
echo In dat2: %a%; %b%
set a=0
set b=5

Grüße
bastla
erik87
erik87 10.10.2007 um 20:17:14 Uhr
Goto Top
erstmal recht herzlichen dank,

hmm ja also ich, ist mir nen bischen peinlich.. aber ich hab den fehler gefunden warum es nicht ging mit den variablen übermitteln..

ich hatte

set %b%=2

geschrieben...

hmm also das geht soweit!
ich möchte jetzt, wo ich die variablen übergeben habe, sie durch rechnungen verändern und dann wieder zurückgeben.
Da das programm zu lang wird wollte ich es in einzelne programme aufteilen. So dass ich ein hauptprogramm habe (dat1) welches die eingaben vornimmt und dann weiterführende programme startet. Ihr müsst entschuldigen ich beschäftige mich erst seit 6 wochen mit batch.
und wisst ihr ob es eine math-funktion im batch gibt? ich habe nähmlich festgestellt das batch weitaus übersichtlicher ist wie c++ und somit könnte ich das ganze programm in batch schreiben.
erik87
erik87 10.10.2007 um 20:29:40 Uhr
Goto Top
Ok , recht herzlichen Dank Bastla,
hab es hinbekommen!
man darf die 2. *.bat datei nicht mit exit beenden! Hmm, hätte ich eigentlich auch vorher drauf kommen können! Den rest bekomm ich dann glaub ich selber hin!

Noch mal vielen Dank für die schnellen Antworten!
Damit ist mein problem gelöst!

Gruß, erik