pschsch
Goto Top

Batchdatei zum Kopieren von Verzeichnissen bzw. Ordnern verbessern...

Hinzufügen von Variablen

Ich benutze folgende Batchdatei zum Kopieren von Ordnern, die ich auf CMD- (veraltet: DOS-) Ebene aufrufe:


if "%1"=="" goto fehler

for %%c in (r1pc01 r1pc02 r1pc03) do md X:\Schueler\EDVRaum1\%%c\%1
for %%c in (r1pc01 r1pc02 r1pc03) do xcopy %1 X:\Schueler\EDVRaum1\%%c\%1 /s/e/v
goto ende

:fehler
cls
echo Verzeichnisname wurde nicht eingegeben!

:ende
pause


Die Datei funktioniert nur dann, wenn sich die Batchdatei im selben Ordner wie das zu kopierende Verzeichnis befindet.

Gibt es eine Möglichkeit, von dem Speicherort der Batchdatei aus Quellordner und Zielordner separat einzugeben, so dass ich die Datei nicht immer umkopieren muss?

Kennt jemand ein Programm oder Skript, das diese Aufgabenstellung erledigt? (Bei Dateien arbeite ich mit WiNAss.exe von ALP Dillingen.)

Content-Key: 64193

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

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

Member: bastla
bastla Jul 19, 2007 at 09:49:16 (UTC)
Goto Top
Hallo pschsch!

Du könntest für den Ordner beim Aufruf (auch zB per Drag&Drop auf die Batchdatei) den vollen Pfad übergeben und den (letzten!) Ordnernamen mit %~n1 (anstatt %1) isolieren (ist eigentlich für Dateien gedacht, aber für MS ist in diesem Fall alles, was nach dem letzten "\" steht eine "Datei").

Grüße
bastla
Member: Biber
Biber Jul 19, 2007 at 11:18:14 (UTC)
Goto Top
Moin pschpsch,

Du bist in besten Händen, deshalb nur OffTopic als Fussnote:
  • Dein Beitrag gehört nach "Batch & Shell" und nicht nach "Windows". Ich verschiebe ihn.
  • STREICHE: "die ich auf DOS-Ebene aufrufe"; SETZE "die ich auf CMD-Ebene aufrufe".

Unter DOS ließe sich die Syntax nur rudimentär verwenden.
Und hin und wieder haben wir noch Fragen, die sich (eher) auf eine DOS-Syntax beziehen - diese können das nicht abtippen, was oben steht.

Wenn Du hin und wieder im EDV am Pult stehst, solltest Du schon zwischen DOS-Prompt und CMD-Prompt unterscheiden... face-wink

Hoffe, der Groschen....äääh...das 10-Cent-Stück ist gefallen.

Grüße
Biber
Member: maneich
maneich Jul 21, 2007 at 14:24:33 (UTC)
Goto Top
Hallo,

so wie ich das sehe, dürfte die Lösung für DOS- und CMD-Ebene die gleiche sein.

if "%1"=="" goto fehler
set x=Laufwerk:\Verzeichnispfad\

:: for %%c in (r1pc01 r1pc02 r1pc03) do md X:\Schueler\EDVRaum1\%%c\%1
for %%c in (r1pc01 r1pc02 r1pc03) do xcopy %x%%1 X:\Schueler\EDVRaum1\%%c /s/e/v
goto ende

Damit kann die Batch eigentlich von überall ausgeführt werden.

MfG maneich
Member: pschsch
pschsch Jul 23, 2007 at 06:05:32 (UTC)
Goto Top
@bastla
Habe deine überarbeitete Batchdatei ausprobiert mit "drag and drop" und hat bestens funktioniert. Vielen Dank für die wirklich tolle Hilfe!
Member: pschsch
pschsch Jul 23, 2007 at 06:08:59 (UTC)
Goto Top
@maneich
Wie muss ich jetzt "set x=Laufwerk:\Verzeichnispfad\" belegen? Kannst du's mal am Beispiel erläutern?
Member: maneich
maneich Jul 23, 2007 at 09:11:15 (UTC)
Goto Top
Hallo,

nun ja, Du mußt hier die Adresse (Hauptverzeichnis) angeben, in der die Verzeichnisse der For-Schleife liegen.

z.B.: set x="C:\Eigene Dateien\Test\"

MfG maneich