deit99
Goto Top

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!

Content-Key: 128034

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

Printed on: April 25, 2024 at 10:04 o'clock

Member: Snowman25
Snowman25 Oct 27, 2009 at 14:47:20 (UTC)
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
Member: TsukiSan
TsukiSan Oct 27, 2009 at 15:59:48 (UTC)
Goto Top
oder so:
Namen(0,0,0,0)
Namen(0,1,0,0) = Mueller
Namen(0,2,0,0)=Meier
'etc  

Gruß
Tsuki
Member: Snowman25
Snowman25 Oct 27, 2009 at 16:03:40 (UTC)
Goto Top
das ist aber kein Windowsbatch...
Mitglied: 60730
60730 Oct 27, 2009 at 16:50:37 (UTC)
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ß
Member: bastla
bastla Oct 27, 2009 at 21:59:50 (UTC)
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
Member: deit99
deit99 Oct 28, 2009 at 07:16:33 (UTC)
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\"   
               )
Member: bastla
bastla Oct 28, 2009 at 07:25:26 (UTC)
Goto Top
... wobei (nur der Ordnung halber) anzumerken wäre, dass die Option "/d" bei "for" hier nicht benötigt wird.

Grüße
bastla
Mitglied: 60730
60730 Oct 28, 2009 at 07:36:54 (UTC)
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ß
Member: bastla
bastla Oct 28, 2009 at 07:51:55 (UTC)
Goto Top
@Timo
dafür, dass ichs Blind am Mac getippt hab
... gebührt aber jedenfalls ein Sonderlob. face-wink

Grüße
bastla