deit99

Mehrere Werte in Variable

Hallo,

ich habe ein Batch Script mit dem Verzeichnisse angelegt und Dateien kopiert werden (Achtung: Abteilung1 und Abteilung2 haben verschiedene Ordner/Dateien):
REM Abteilung1
md d:\daten\MUELLER\neu
copy c:\temp\datei.html d:\daten\MUELLER\neu

md d:\daten\MAYER\neu
copy c:\temp\datei.html d:\daten\MAYER\neu



REM Abteilung2
md d:\daten\SCHMIDT\neu
copy c:\pool\datei2.html d:\daten\SCHMIDT\neu

md d:\daten\VOGEL\neu
copy c:\pool\datei2.html d:\daten\VOGEL\neu


Wie kann ich das Script vereinfachen das beispielsweise die Usernamen (MUELLER,MAYER,SCHMIDT,VOGEL) in Variablen stehen, da in Zukunft noch mehr dazukommt?

In etwa so:

VAR1 = MUELLER,MAYER,...
VAR2= SCHMIDT, VOGEL,...

REM Abteilung1
md d:\daten\VAR1\neu
copy c:\temp\datei.html d:\daten\VAR1\neu

REM Abteilung2
md d:\daten\VAR2\neu
copy c:\pool\datei2.html d:\daten\VAR2\neu


Danke schonmal!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 128034

Url: https://administrator.de/forum/mehrere-werte-in-variable-128034.html

Ausgedruckt am: 17.05.2025 um 00:05 Uhr

Snowman25
Snowman25 27.10.2009 um 15:47:20 Uhr
Goto Top
batchvariablen werden in Prozentzeichen benutzt und per SET-Befehl festgelegt.
z.B.:
SET abteil1=MUELLERmd D:\Daten\%abteil1%\neucopy C:\temp\datei.html D:\Daten\%abteil1%\neu
hier ließe sich noch kürzen, falls das ganze länger mehrere Befehle beinhaltet:
SET abteil1=MUELLERSET src=C:\temp\datei.htmlSET dir=D:\Daten\%abteil1%\neumd %dir%copy %src% %dir%

Wenn du abteil1 jetzt noch aus einem Textfile beziehst, dann hast du alles
TsukiSan
TsukiSan 27.10.2009 um 16:59:48 Uhr
Goto Top
oder so:
Namen(0,0,0,0)
Namen(0,1,0,0) = Mueller
Namen(0,2,0,0)=Meier
'etc  

Gruß
Tsuki
Snowman25
Snowman25 27.10.2009 um 17:03:40 Uhr
Goto Top
das ist aber kein Windowsbatch...
60730
60730 27.10.2009 um 17:50:37 Uhr
Goto Top
Servus,

zum einen - die Code Blöcke benutzen
zum anderen:
for /d %%a in (mueller,meier,schultze) do echo %%a
oder genauer:

for /d %%a in (mueller,meier,schultze) do (
               if not exist "d:\daten\%%a\neu" md "d:\daten\%%a\neu"  
               copy c:\temp\datei.html d:\daten\%%a\neu\"  
               )

Gruß
bastla
bastla 27.10.2009 um 22:59:50 Uhr
Goto Top
... oder falls es auch ein Oneliner sein darf:
for %%a in (mueller,meier,schultze) do xcopy c:\temp\datei.html "d:\daten\%%a\neu\">nul
Wenn "noch mehr dazukommt" wäre es vielleicht auch eine Option, (wie von Snowman25 bereits angesprochen) die Namen in einer Textdatei zu hinterlegen (jeder Name in einer eigenen Zeile) und diese Datei auszulesen:
for /f "delims=" %%a in (D:\Namensliste1.txt) do xcopy c:\temp\datei.html "d:\daten\%%a\neu\">nul
Grüße
bastla
deit99
deit99 28.10.2009 um 08:16:33 Uhr
Goto Top
Vielen Dank für die zahlreichen Antworten.

So funktioniert es:
for /d %%a in (mueller,meier,schultze) do ( 
               if not exist "d:\daten\%%a\neu" md "d:\daten\%%a\neu"   
               copy c:\temp\datei.html d:\daten\%%a\neu\"   
               )
bastla
bastla 28.10.2009 um 08:25:26 Uhr
Goto Top
... wobei (nur der Ordnung halber) anzumerken wäre, dass die Option "/d" bei "for" hier nicht benötigt wird.

Grüße
bastla
60730
60730 28.10.2009 um 08:36:54 Uhr
Goto Top
Zitat von @bastla:
... wobei (nur der Ordnung halber) anzumerken wäre, dass ..

wenn der Tmo deinen vorherigen Beitrag gelesen hätte, er seinen nicht geschrieben face-wink

dafür, dass ichs Blind am Mac getippt habt

Gruß
bastla
bastla 28.10.2009 um 08:51:55 Uhr
Goto Top
@Timo
dafür, dass ichs Blind am Mac getippt hab
... gebührt aber jedenfalls ein Sonderlob. face-wink

Grüße
bastla