Windows Batch parametrisiertes copy

takidoso

Erfahrenes Mitglied
Hallo und Halli,
ich möchte ein kleines Windows-Batch-Programm erstellen, welches parametrisiert eine vorgegebene Liste von Dateien in ein parametrisiertes Ziel kopiert.

Dabei soll der erste Parameter das Zielverzeichnis sein alle anderen die zu kopierenden Dateien.
Nun habe ich mich ja doch versucht schlau zu machen und habe testweise folgendes fabriziert.

Code:
echo off
set goal=%1
shift /1
for %%x in (%*) do echo ***** %%x %goal%
mit der Ausgabe
Code:
***** datis1 datis1
***** lala2 datis1
***** gaga3 datis1
***** lolo4 datis1
ganz offenbar wird das schiften ignoriert, oder ich verstehe den Umgang damit nicht.
Auch Spielereien mit z.B. shift /2 gehen genauso unverändert aus :-(

kann mir da jemand korrigierend helfen?

mit bestem Dank im Voraus

Takidoso
 
Hi.

Das shiften wirkt sich nicht auf die spezielle Variable %* aus sondern nur auf die "normalen" Parameter %1 %2 usw.

Du könntest aber shift in einer Schleife verwenden.

Oder du machst das ganze in VBScript bzw. Powershell.

Gruß
 
Jo das ist offenbar so...
ich habe es nun wie folgt gelöst:

Code:
echo off
set sourcefile=%1

for %%x in (%*) do (
  if not %sourcefile%==%%x copy %sourcefile% %%x
 )

ist vermutlich auch einfacher zu verstehen als eine Variante mit shift

hier ein wenig Off-Topic noch eine bash Variante mit shift
Code:
#!/bin/bash
sourcefile=$1
shift

while [[ ! -z "$1"  ]]
do
  cp "$sourcefile" "$1";
  shift
done
 

Neue Beiträge

Zurück