muckel1986
Goto Top

Problem mit xcopy

Möchte ein Verzeichnis auf eine Externe Festplatte kopieren, schlägt aber fehl.

Guten Morgen und einen schönen Advent!

Seid geraumer Zeit habe ich eine Externe Festplatte. Nun möchte ich, dass darauf meine Daten gesichert werden. Um das nicht jedesmal von Hand kopieren zu müssen, dachte ich mir, dass ich eine batch Datei schreibe, die das für mich übernimmt. Doch mit folgendem funktioniert das nicht so ganz:
@echo off
echo Willkommen zur Datensicherung!
echo Mit diesem kleinen Script führst Du eine Datensicherung durch. Es werden die eingestellten Verzeichnisse auf Dein externes Speichermedium kopiert.
pause
xcopy "c:\%USERPROFILE%\test\" "f:\sicher~1\%date%-%time%" /D /E /Y /I  
pause

Wenn ich das ausführe bekomme ich den Fehler: "Ungültiger Pfad
0Datei(en) kopiert"

Ich dachte, dass ich mit %USERPROFILE% in das Verzeichnis von Vista gehe, was zu meinem Benutzer gehört. Dort habe ich ein Verzeichnis (Ordner) test erstellt, in dem eine txt Datei ist.

Das Verzeichnis test im userprofile sollte dann auf meine Externefestplatte (f) in den Ordner Sicherung kopiert werden. Bzw. es sollte in dem Ordner Sicherung ein Ordner mit dem Datum und der Zeit erstellt werden.

Doch leider klappt das nicht. Kann mir jemand sagen, wo mein Fehler liegt?

Desweiteren möchte ich später gerne verschiedene Ordner/Verzeichnisse angeben, die in das Ziel kopiert werden sollen. Kann man das kombinieren oder muss ich jedesmal die gleiche Zeile wieder schreiben um es so einzeln zu kopieren?

Schonmal vielen Dank für eure Hilfe!
Gruß Muckel / Tobias

Content-Key: 104034

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

Printed on: April 20, 2024 at 13:04 o'clock

Member: education
education Dec 14, 2008 at 09:05:09 (UTC)
Goto Top
%userprofile% ist eine vari für den angemeldeten benutzer.
also
xcopy "c:\dokumente und einstellungen\test\*.*" f:\sicherung\%date%-%time%

oder:

set homepath="c:\dokumente und einstellungen"
xcopy %homepath%\test\*.* f:\sicherung\%date%-%time%\

aber mit den date und time wird es nicht so ganz klappen glaube ich, sind ja sonderzeichen in der uhrzeitsausgabeausgabe

aber warum nimmst du dafür nicht robocopy, gibts es kostenlos bei m$ in download bereich
Member: Muckel1986
Muckel1986 Dec 14, 2008 at 09:18:03 (UTC)
Goto Top
Hallo,

Danke für Deine Antwort. Das mit dem Datum-Zeit-Ordner ist nicht das wichtigste. Mir ist klar, dass %USERPROFILE% die standard Variable ist, die zu dem Verzeichnis des angemeldeten Benutzers führt. Gerade deshalb müsste es ja auch klappen, dass ich dann den Ordner test erreiche.

Mit einer anderen Batch Datei (mit der lasse ich mir in eine Textdatei schreiben, was ich für einen Content habe, funktioniert es ja auch:
@echo off
set music="%USERPROFILE%\Music"  
set doc="%USERPROFILE%\Documents"  
set pic="%USERPROFILE%\Pictures\meineBilder"  
set hp="%USERPROFILE%\Homepage"  
echo Mit diesem kleinen Script wird eine Liste Deiner wichtigen Ordner und dessen Inhalte erstellt. Mit einem Tastendruck startest Du den vorgang.
pause
dir %music% >> musik.txt /S /O /4
echo die Musik wurden aufgelistet. Mit einem Tastendruck kommen wir zu deinen Dokumenten.
pause
dir %doc% >> dokumente.txt /S /O /4
echo die Dokumente wurden aufgelistet. Mit einem Tastendruck kommen wir zu deinen Bildern.
pause
dir %pic% >> Bilder.txt /S /O /4
echo die Bilder wurden aufgelistet. Mit einem Tastendruck kommen wir zu deinem Homepage Verzeichnis.
pause
dir %hp% >> hp.txt /S /O /4
echo das Homepage Verzeichnis wurde aufgelistet. Mit einem Tastendruck beendest Du diese Anwendung.
pause

Daher verstehe ich nicht, dass es mit xcopy nicht funktioniert.


Und robcopy kannte ich bislang noch nicht, wie auch m$.

Vielen Dank
Muckel / Tobias
Member: Muckel1986
Muckel1986 Dec 14, 2008 at 09:24:21 (UTC)
Goto Top
Guten Tag nochmal,

habe das eben mit robcopy ausprobiert und es funktioniert:
robocopy "%USERPROFILE%\test" "F:\Sicherung\%date%" /MIR /LOG+:F:\Sicherung\log.txt  

Ist nur komisch, dass es dort mit %USERPROFILE% klappt und bei xcopy nicht. Naja, werde jetzt noch versuchen da mit Variablen zu arbeiten, damit der Endanwender seine Verzeichnisse selbst eintragen kann.

Gruß und vielen Dank
Muckel / Tobias
Member: bastla
bastla Dec 14, 2008 at 09:50:54 (UTC)
Goto Top
Hallo Muckel1986!

Ist nur komisch, dass es dort mit %USERPROFILE% klappt und bei xcopy nicht.
Worauf education schon hingewiesen hat: Das Problem war "%time%", da Du dafür folgendes Format erhältst: "10:49:09,79" - damit würde auch "robocopy" nicht zurechtkommen.

Falls Du dennoch die Uhrzeit dabei haben wolltest, könntest Du etwa so vorgehen (und vielleicht auch noch ein besser sortierbares Datumsformat verwenden):
set Zeit=%time:~,8%
set Zeit=%Zeit::=%
set Datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%
Noch ein Hinweis zu "robocopy /MIR": Damit werden im Sicherungsordner Dateien, die im Quellordner nicht mehr vorhanden sind, ebenfalls gelöscht - ein ev nicht unbedingt erwünschtes Verhalten ...

Grüße
bastla
Member: education
education Dec 14, 2008 at 10:31:34 (UTC)
Goto Top
und noch ein fehler in deiner batch warum es nicht ging:

xcopy "c:\%USERPROFILE%\test\" "f:\sicher~1\%date%-%time%" /D /E /Y /I

das C:\ ist auch falsch da ja userprofile schon auf c:\ hinweist somit wäre der pfad
c:\c:\doc und einstell
Member: chibi-fighter
chibi-fighter Dec 14, 2008 at 10:41:16 (UTC)
Goto Top
bist du dir auch sicher dass deine externe f: ist? das kann sich ja auch ändern...
Wenn er dann nämlich f: nicht finden kann hat er ja nichts wo ers hinkopiern kann.
Member: Muckel1986
Muckel1986 Dec 14, 2008 at 10:45:24 (UTC)
Goto Top
Danke Bastia für deine Antwort.

Da ich bei robcopy mir für jedesmal einen neuen Ordner mit dem aktuellen Datum erzeugen lasse, fällt das löschen der nicht mehr vorhandenen Ordner nicht ins Gewicht.

Aktuell habe ich nur die Sache, dass ich da gerne noch mit Variablen für verschiedene Verzeichnisse arbeiten würde:
@echo off
set doc="%USERPROFILE%\Documents"  
set pic="%USERPROFILE%\Pictures"  
set music="%USERPROFILE%\Music"  
echo die Datensicherung beginnt
pause
robocopy "%doc%" "F:\Sicherung\%date%" /MIR /LOG+:F:\Sicherung\log-%date%.txt  
pause

Kann ich da alle meine Variablen reinbauen oder muss ich für jedes ein eigene Befehlszeile aufbauen?
Member: bastla
bastla Dec 14, 2008 at 13:08:48 (UTC)
Goto Top
Hallo Muckel1986!

Kann ich da alle meine Variablen reinbauen oder muss ich für jedes ein eigene Befehlszeile aufbauen?
Eher letzteres, da Du mehrere Ordner nur ausschließen (/XD) kannst.

Du könntest allerdings eine Schleife der Art
for /f "delims=" %%i in (F:\Robocopy_Include.txt) do robocopy "%%i" "F:\Sicherung\%date%" /MIR /LOG+:F:\Sicherung\log-%date%.txt 
verwenden, um die Liste der zu sichernden Ordner in einer eigenen Datei (Inhalt: je Zeile ein Ordnerpfad) pflegen zu können.

Grüße
bastla