# Batch / CMD Handhabung von Arrays



## takidoso (14. November 2012)

Hallo und Halli,
irgendwie suche ich mir im Netz gerade 'nen Wolf wo verständlich erklärt wird wie Arrays/Lsten in CMD unter XP manpuliert werden können.
Einem Datei kopierenden Script wreden Parameter übergeben, wobei der  erste eine Quelldatei und die restlichen die Zieldateien 
darstellen.

Momentan sieht mein Progrämmchen so aus:

```
set sourcefile=%1
for %%x in (%*) do copy %sourcefile% %%x
```
funktionert zwar aber mit einem unnötigen Kopierversuch, der natürlich scheitert, da versucht wird, die Quelles somit auf sich selbst zu kopieren.
Ausgabe ist daher:
Die Datei kann nicht in sich selbst kopiert werden.  
        0 Datei(en) kopiert.                         
        1 Datei(en) kopiert.                         
        1 Datei(en) kopiert.         

Würde zu gerne wissen, wie man Arrays oder Lsten entsprechend manipulieren kann, d.h. Elemente Hinzufügen, Ändern, Löschen etc. 

Für einen guten Tip oder Link mit einem gescheiten Tutorial wäre ich echt dankbar.

Takdoso


----------



## deepthroat (14. November 2012)

Hi.

Erstens, meintest du evtl. Batch anstelle von _BASH_?

Zweitens, es gibt keine Listen oder Arrays in Batch. %* ist lediglich eine Zeichenkette welche alle Argumente enthält.

Drittens könntest du das erste Argument einfach in der Schleife überspringen:

```
setlocal enableDelayedExpansion

for %%x in (%*) do (
  if !m!==yes (
     copy ...
  ) else (
     set m=yes
  )
)

endlocal
```


----------



## takidoso (14. November 2012)

Ja stimmt ich meinte _Ba*t*ch_, da hat meine Tastatur mal wieder einen Buchstaben ausgelassen :-D

ahh ok dann werde ich mal Deinen Lösungsvorschlag annehmen, st vermutlich das einfachste.
Nun verstehe ich auch warum ich nichts derartiges im Netz finden kann :-D

Aber generell, müsste man dann hier, da es nicht als Liste verwendet wrd, sondern die _for_ schlefe lediglch parst, dann also eine Art Stringverarbeitung anstreben?


----------



## deepthroat (14. November 2012)

takidoso hat gesagt.:


> Aber generell, müsste man dann hier, da es nicht als Liste verwendet wrd, sondern die _for_ schlefe lediglch parst, dann also eine Art Stringverarbeitung anstreben?


Ja, es gibt rudimentäre Stringmanipulationen in Batch.

Allerdings gibt es damit häufig Probleme die _Quotes_ richtig zu entwerten und jedes Argument auch nur als einzelnes Argument zu verarbeiten.


----------

