Batch / CMD Handhabung von Arrays

takidoso

Erfahrenes Mitglied
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:
Code:
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

Erfahrenes Mitglied
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:
Code:
setlocal enableDelayedExpansion

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

endlocal
 

takidoso

Erfahrenes Mitglied
Ja stimmt ich meinte Batch, 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

Erfahrenes Mitglied
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.