chrisdi91
Goto Top

Robocopy einzelner Datei kopiert auch gleichebnige Ordner allerdings leer

Hallo,
ich hab eine Batch-Datei, die von einer Daten/Ordner-Strukter nur gewisse Ordner und Strukturen an eine andere Stelle kopiert.

dazu benutzte ich Robocopy und den \MIR Befehl.

Die Ordnerstruktur zu kopieren klappt auch.
nur die kopie einer bestimmten Datei Funktioniert nicht optimal.
Die Datei wird zwar kopiert aber auch alle Ordner auf der selben Ordnerebene wie die zu kopierende Datei werden angelegt, aber ohne Inhalt.

Ich habe mir halt einen Block angelegt in dem ich dann nur entweder Verzeichnis oder Verzeichnis und kopierende Datei angeben muss ...

evtl. könnte man auch eine Liste übergeben mit kopierenden Datein und eine Liste mit Ordnern ... allerdings liegen die verschieden tief
im Ordnerbaum und sind auch teilweise gleich von Namen her.
Daher hätt ich die ca 20 Dateien bzw Verzeichnisse einzeln angewählt ...


REM * Datei kopieren *
REM
REM
* Quelle: Entwicklerspeicherpfad *
set copypath=BIB\documentation\pneumatics
set copyfile=BIB_pneumatics.pdf
set BIBsource=c:\%copypath%
Rem Fürs Log-File
set log=BIBrelease
REM


REM * Ziel: öffentliche Benutzer-BIB

set BIBdrv=m:\doku\cdr
set BIBLdir=%copypath%

REM


REM
* Spiegeln *

set MIR=/MIR
REM /MIR löscht Dateien und Verzeichnisse im Ziel, die in der Quelle nicht mehr existieren
REM (Verz. löschen, die in Quelle nicht mehr vorhanden sind)
echo.
echo *
REM


REM


REM * Kopieren und Logfile anlegen ***
robocopy %BIBsource%\ %BIBdrv%\%BIBdir% %copyfile% %MIR% /LOG+:%log%.log /NP


Mache mit Batchdateien noch nicht so viel bzw bin da erst recht am Anfnag.
Lösungsvorschläge bzw Verbesserungsvorschläge sind gern gesehn!

Danke!

Content-ID: 250583

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

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

templier
templier 30.09.2014 aktualisiert um 17:38:56 Uhr
Goto Top
Zitat von @chrisdi91:

Hallo,
ich hab eine Batch-Datei, die von einer Daten/Ordner-Strukter nur gewisse Ordner und Strukturen an eine andere Stelle kopiert.
dazu benutzte ich Robocopy und den \MIR Befehl.
Gute Grundsatzentscheidung, weil RoboCopy Klasse ist.

Die Ordnerstruktur zu kopieren klappt auch.
Na also.

nur die kopie einer bestimmten Datei Funktioniert nicht optimal.
Die Datei wird zwar kopiert aber auch alle Ordner auf der selben Ordnerebene wie die zu kopierende Datei werden angelegt, aber
ohne Inhalt.

Ihr immer mit euren alten CMD-Files. Ich nutze RoboCopy schon seit Jahren über VBS und wenn Du es so benutzt (Beispiel aus meinem VB-Script) funktioniert das auch optimal:

On Error Resume Next

objSource = "Z:\_Backups"

objDestination = "G:\_Backups"

objCommand = "RoboCopy.Exe " & Chr(34) & objSource & Chr(34) & " " & Chr(34) & objDestination & Chr(34) & " /MIR /Z /R:5 /W:10"
objShell.Run(objCommand),0,True

objFile.WriteLine ("BACKUPs wurden gesichert")

Du solltest mal die Hilfe von RC aufrufen und Dich mit den Parametern auseinandersetzen. Dann klappt es auch.

Beste Grüsse
Ralph
chrisdi91
chrisdi91 30.09.2014 um 18:25:42 Uhr
Goto Top
Hallo Ralph,
danke für die schnelle antwort.

meinen eigentlichen code hats "leicht" naja ncith verissen aber wusste nicht dass der dann nur teilweise angezeigt wird ...
aufjedenfall ...

in den parametern habe ich eig. ja gesucht ...
der Block fürs verzeichnis sieht quasi genauso aus nur das beim erstellen das %copyfile% fehlt und auch oben garnicht zugewiesen wird.

Was meinst du mit CMD-FILES?
ich hab die Batch datei zwar starten lassen über Klick per Maus (daher cmd?), allerdings sollt ichs im Gschäft (auch) unter tcsh ausführen können ...

aber zurück zum eigentlichen Problem.

Ich versteh nicht ganz was bei dir das "obCommand macht bzw was Chr(34) bedeutet.
okay laut google hab ich was rausgefunden mit "double-quote" also um was besser lesbarer zu gestalten oder wie? face-sad
ahhh ich bin verwirrt :D

Auch versteh ich noch nicht wirklich warum denn nicht nur das pdf, sondern auch in dem Quellordner auf der selben Ebene gespeicherten Ordner "icons" und "pictures" mit erstellt werden. dachte mit
robocopy Quelle Ziel Datei kann ich nur die einzelne datei kopieren?
templier
templier 30.09.2014 aktualisiert um 18:50:43 Uhr
Goto Top
Hi Du,

ich würde mich zuerst einmal mit den Parametern von RoboCopy auseinandersetzen.

- CMD Fenster öffnen
- "robocopy /?" eingeben - Dann sieht man schon was geht.
- Dann schauen was ich möchte.
- Dann Testweise das ganze mal aufbauen
- Wenn alles wie gewünscht geht: "Produktiv" gehen.

Mein Beispiel war aus meinem persönlichen Visual Basic Script. Der Aufruf (RoboCopy.Exe) und danach die personalisierten Parameter (/MIR /Z /R:5 /W:10) sind immer die gleichen.
Ob man sie in einem CMD-Fenster anwendet oder in einem anderen Script.

Diese habe ich für meine Bedürfnisse angepasst. Bei Dir kann es schon wieder ganz anders Aussehen.

Deswegen:

Schau Dir bitte erst einmal alle Parameter von RC an und entscheide danach welche Bedürfnisse Du hast. Teste es. Sollte danach etwas schief gehen, sind wir ja gerne da
um zu Helfen face-wink

Viele Grüsse
Ralph
rubberman
Lösung rubberman 01.10.2014 aktualisiert um 09:22:51 Uhr
Goto Top
Hallo chrisdi91, willkommen im Forum.

Per Default arbeiten ROBOCOPY mit den Optionen /S und /E. Das ist der Grund warum die Verzeichnisse angelegt werden. Mit der Option /XD kannst du Verzeichnisse angeben, die davon ausgeschlossen werden sollen. Um nicht jedes Verzeichnis einzeln angeben zu müssen, kannst du das * als Wildcardzeichen verwenden.
Da ich mit deiner Variablenjonglage nicht klar komme, hier mal als Einzeiler ...
robocopy "C:\quelle" "X:\ziel" "kopiermich.ext" /log+:"protokoll.log" /np /mir /xd *

Grüße
rubberman
chrisdi91
chrisdi91 01.10.2014 aktualisiert um 09:30:05 Uhr
Goto Top
Top!
vielen dank!
Muss ich morgen nur noch ausprobiere face-smile
danke schon mal


JAAAA!!!
tut so wie ich will face-smile

Das man mit * quasi Pfadwildcards setzt wusst ich nich, wusste nur das man halt mit
*.pdf zb. alle Daten dieses Datentyps ...

Aber nochmal vielen Dank!!!