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.)
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.)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 64193
Url: https://administrator.de/forum/batchdatei-zum-kopieren-von-verzeichnissen-bzw-ordnern-verbessern-64193.html
Ausgedruckt am: 27.12.2024 um 19:12 Uhr
6 Kommentare
Neuester Kommentar
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
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
Moin pschpsch,
Du bist in besten Händen, deshalb nur OffTopic als Fussnote:
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...
Hoffe, der Groschen....äääh...das 10-Cent-Stück ist gefallen.
Grüße
Biber
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...
Hoffe, der Groschen....äääh...das 10-Cent-Stück ist gefallen.
Grüße
Biber
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
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