Batch For-Schleife Variable

marabunta

Newbie
Registriert
Sep. 2013
Beiträge
3
set Ziele=AS,BS

FOR /F "delims=, " %%x in ("!Ziele!") DO (

set var=%%x

set AS_Server=\\AS2010
set BS_Server=\\BS2010

set BEST=!!var!_server!\Bu.txt


CALL :Patchprozess

)
:Patchprozess
echo !BEST!
pause

Ergebnis:

D:\Tasks>echo !BEST!
AS_server\Bu.txt

Aber nicht \\AS2010\Bu.txt wie es sein sollte bzw. \\BS2010\Bu.txt im zweiten durchlauf, warum?
DAnke
 
Sieht chaotisch aus :)

Willkommen im Forum.

Warum wird da keine IF Abfrage gesetzt und mit weiteren Variablen gearbeitet?
Ich kenne auch das !!var!_server! nicht.

Wenn man mit SET "Variable=x Variablen erstellt/vergibt, so werden die doch mit %Variable% abgerufen.

Eventuell bringt dich das weiter.

lg
fire
 
Du kannst keine Ausrufezeichen für Variablen verwenden, wenn die delayedExpansion nicht an ist. Und dass die Verschachtelung in Zeile "set BEST" (Es gibt im Forum Code Tags, da könnte man auch eine vernünftige Zeilenangabe machen) so funktioniert, bezweifle ich sowieso.
Werden die Ziele eigentlich dann wechseln oder warum steckst du die überhaupt in eine Variable?
 
wenn ich mich nicht vertippt habe funktioniert es so, falls es mal jmd braucht:
setlocal enabledelayedexpansion --> stand bei mir schon in der datei, war nur faul =)
set Ziele=AS,BS
set AS_Server=\\AS2010\bu.txt --> AS_Server und BS_Server bekommen hier ihren Pfad
set BS_Server=\\BS2010\bu.txt

FOR /F "delims=, " %%x in ("!Ziele!") DO ( --> Hier werden die Namen von "Ziele" am "," getrennt also erst AS dann BS

set var=%%x --> in %%x steht jetzt zuerst AS und das wird an var übergeben also var=AS

if /i "!var!_Server" EQU "AS_SERVER" (set BEST="%AS_Server%")
if /i "!var!_Server" EQU "BS_SERVER" (set BEST="%BS_Server%")

CALL :Patchprozess

)
:Patchprozess
echo !BEST!

es soll quasi erst den einen server patchen und dann den nächsten damit die pfade stimmen wurde das so gelöst
 
Zuletzt bearbeitet:
Zurück
Oben