mosepe
Goto Top

Robocopy Fehler 123 bei automatisiertem PST Backup

Hi,

nachdem ich mir bereits viele nützliche Tipps auf dieser Seite für Batchfiles etc. geholt habe, stelle ich nun selbst eine Frage da ich entweder falsch danach Suche oder diese einfach nicht existiert.

Schreibe gerade an einer Batchfile zur Sicherung aller lokalen Daten der User auf ein extra dafür angelegtes Share.
Funktioniert alles soweit so gut, jedoch hapert es bei der von mir eingebauten Funktion zur automatischen Suche von .pst Dateien und deren anschließende Sicherung.

Hier nun ein kleiner Auszug aus besagter Batchdatei.
:PST
set dir=c:\
set file=*.pst
set endung=.pst
set ms=%time:~9,2%
set zeit=%date%_%ms%ms
for /r "%dir%" %%i in ("%file%") do (  
if exist %%i robocopy "%%i" "%bckdrv%%bckdir%\%%~ni%endung%_%zeit%" /E)  
goto Sicherung
Ich will bei diesem Vorgang alle Lokal befindlichen Outlook-Archivdateien finden und diese dann sichern, wobei hier die gesamte Ordnerstruktur mitkopiert werden soll um : 1. dem User einen Prompt zu ersparen, 2. sollten gleichnamige Dateien vorhanden sein (z.B. Archiv.pst) die aber dann meist in Ordnern wie z.B. 2008,2009,2010... etc liegen, eben durch die Kopie der Ordnerstruktur nicht kollidieren zu lassen.

Allerdings spuckt mir hier robocopy den Fehler 123 aus.
Siehe auszug aus LOG
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Wed Apr 20 11:19:32 2011

   Source : C:\Users\001150594\Desktop\pstpst.pst\
     Dest : x:\001150594\pstpst.pst_20.04.2011_79ms\

    Files : *.*

  Options : *.* /S /E /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

2011/04/20 11:19:32 ERROR 123 (0x0000007B) Accessing Source Directory C:\Users\001150594\Desktop\pstpst.pst\
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
Der Fehler ist ersichtlich, er will hier auf ein Verzeichnis zzgreiffen das nicht vorhanden sein kann, da besagte Datei - eben eine solche ist.

Komme leider nicht auf einen grünen Zweig, hatte dieses kurze Skriptstückchen von irgendeiner Webseite, hier war es mit xcopy gelöst, da ich aber auch hier keinen Weg gefunden habe die Ordnerstruktur ordentlich zu übertragen habe ich auf robocopy umgesattelt.

Ich bitte um eure Hilfe.

lg
Kommentar vom Moderator Dani am 20.04.2011 um 11:39:52 Uhr
Formatierungen hinzugefügt.

Content-ID: 164959

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

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

bastla
bastla 20.04.2011 um 11:44:36 Uhr
Goto Top
Hallo mosepe und willkommen im Forum!

Versuch es mit der folgenden Zeile 8
robocopy "%%~dpi" "%bckdrv%%bckdir%\%%~ni%endung%_%zeit%" *%endung% /E)
(die ich allerdings gleich an die Zeile 7 anfügen würde) ...
[Edit] Da als Ziel ja ein Ordner angegeben wird, eher:
robocopy "%%~dpi" "%bckdrv%%bckdir%_%zeit%" *%endung% /E)
[/Edit]
Mit "%%~dpi" wird nicht der Pfad der Datei selbst, sondern der des Ordners, in dem sie sich befindet, verwendet (siehe dazu "for /?", ziemlich gegen Ende).

BTW: Das "if" vorneweg war sinnfrei, da die Zeile 8 nur ausgeführt wird, wenn eine passende Datei gefunden wurde ...

Grüße
bastla

[Edit] Anmerkung: Ursprünglich wurde "xcopy" verwendet - damit war auch ein Umbenennen der Datei möglich; mit "robocopy" werden allerdings grundsätzlich Ordner kopiert - Alternative:
xcopy "%%i" "%bckdrv%%bckdir%\%%~nxi_%zeit%*")
[/Edit]
ackerdiesel
ackerdiesel 20.04.2011 um 11:45:10 Uhr
Goto Top
Hallo,

das Problem wird sein, das Robocopy nur Verzeichnisse aber keine einzelnen Files kopieren kann. Die pst datei musst Du mit dem Schalter "/XF" einbinden. Also ungefähr so:

robocopy "%%i" "%bckdrv%%bckdir%\%%~n /XF: *.%endung" /E

Aus dem Kopf raus, habe es jetzt allerdings nicht ausprobiert.

Gruß
ackerdiesel
99045
99045 20.04.2011 um 11:48:59 Uhr
Goto Top
Hi,

nimm mal in Zeile 7 und 8 die Backslashes am Ende des Pfades weg.

Gruß
mosepe
mosepe 20.04.2011 um 12:17:29 Uhr
Goto Top
sieht nun so aus

for /r "%dir%" %%i in ("%file%") do (robocopy "%%~dpi" "%bckdrv%%bckdir%\%%~ni%endung%_%zeit%" *%endung% /E)

und ergibt

ERROR : Invalid Parameter #1 : "c:\Users\001150594\Documents" x:\001150594\pstdatei.pst_20.04.2011_27ms *
.pst /E"
mosepe
mosepe 20.04.2011 um 12:19:28 Uhr
Goto Top
auch hier leider eini fehler,

ERROR : Invalid Parameter #2 : "x:\001150594\%~n /XF: *.pst"
mosepe
mosepe 20.04.2011 um 12:21:41 Uhr
Goto Top
Hier passiert dann garnix, und er fährt mit dem weiteren Skript an..
bastla
bastla 20.04.2011 um 12:22:54 Uhr
Goto Top
Hallo mosepe!

Versuch es entweder mit der "xcopy"-Version (Vorteil: Umbenennung der Datei) oder so:
robocopy "%%i\.." "%bckdrv%%bckdir%_%zeit%" *%endung% /E)
Grüße
bastla
mosepe
mosepe 20.04.2011 um 12:24:05 Uhr
Goto Top
[Edit] Anmerkung: Ursprünglich wurde "xcopy" verwendet - damit war auch ein Umbenennen der Datei möglich;
mit "robocopy" werden allerdings grundsätzlich Ordner kopiert - Alternative:
xcopy "%%i" "%bckdrv%%bckdir%\%%~nxi_%zeit%*")
> 
[/Edit]

Auch hier wie bei der von Kaputtnick beschriebenen Variante passiert garnix..

Frage, soll nun das if gelöscht werden ?
Skyemugen
Skyemugen 20.04.2011 um 12:26:58 Uhr
Goto Top
Aloha,

warum robocopy?

Wenn ich das richtig sehe, kopierst du damit nur Dateien, da %%i doch folgende Informationen enthält:
C:\Irgend\Ein\Pfad\Datei.pst
C:\Irgend\Ein\Anderer\Pfad\Datei.pst
C:\Irgend\Wo\Datei.pst

Wobei robocopy wahrscheinlich nur den letzten Eintrag kopieren wird, nehme ich an ...
Ich bin mir momentan nicht sicher, kann robocopy einfach nur Datei zu Zielverzeichnis kopieren?

Warum hast du xcopy (darauf ist der code eher ausgelegt - siehe das EDIT bei bastla) nicht gelassen?

An sich kann ich den Fehler, warum robocopy backslashes hinzufügt nicht nachvollziehen ... eventuell macht es das aber wirklich, weil es generell auf Verzeichnisse ausgelegt ist ...

greetz André
mosepe
mosepe 20.04.2011 um 12:32:43 Uhr
Goto Top
Diese Variante funktioniert, allerdings kopiert er die pst-Dateien direkt in den Sicherungsordner, der jetzt komischerweise den Usernamen statt des Dateinamens trägt und erstellt darin die Ordnerstruktur die im Datei-Ort vorhanden ist.
Also fehlt jetzt noch eine Ordnerstruktur darüber denk ich..
bastla
bastla 20.04.2011 um 12:32:55 Uhr
Goto Top
Hallo mosepe!

Die Zeile 7 sollte dann so aussehen:
for /r "%dir%" %%i in ("%file%") do xcopy "%%i" "%bckdrv%%bckdir%\%%~nxi_%zeit%*"
(überflüssige Klammern eingespart) ...

Grüße
bastla
mosepe
mosepe 20.04.2011 um 12:34:14 Uhr
Goto Top
Für Alle hier face-smile

DAS ORIGINAL DER PST SICHERUNG

@echo off
REM Variablen Setzen
set dir=c:\
REM !!BITTE ENTSPRECHEND ANPASSEN!!
set file=*.pst
set endung=.pst
set pfad=C:\Data
REM Erstellung der Zeitvariable
set h=%time:~0,2%
set m=%time:~3,2%
set s=%time:~6,2%
set ms=%time:~9,2%
set zeit=%date%_%h%h%m%m%s%s%ms%ms
REM Sucht nach Dateien und kopiert diese in einen Unterordner im oben angegebenen
REM Verzeichnis. Der Name des Unterordner Setzt sich aus
REM "Dateiname_Dateiendung_Datum_Uhrzeit mit milisekunde" zusammen.
for /r "%dir%" %%i in ("%file%") do (
if exist %%i xcopy "%%i" "%pfad%\%%~ni%endung%_%zeit%\" /V /S /I)

Props an den Ersteller, wo auch immer er im WWW sein mag ;)
bastla
bastla 20.04.2011 um 12:37:28 Uhr
Goto Top
Hallo mosepe!
Also fehlt jetzt noch eine Ordnerstruktur darüber denk ich..
Dann etwa so:
for /r "%dir%" %%i in ("%file%") do xcopy "%%i" "%bckdrv%%bckdir%%%~pi%%~nxi_%zeit%*"
Grüße
bastla
mosepe
mosepe 20.04.2011 um 12:37:37 Uhr
Goto Top
sah vielversprechend aus, aber irgendetwas passt noch nicht

pstdatei.pst pstdatei.pst_20.04.2011_37ms*
Zweiter Dateiname konnte nicht so erweitert werden, dass er zum ersten passt.
mosepe
mosepe 20.04.2011 um 12:40:08 Uhr
Goto Top
hmmm.. schön langsam glaub ich das wird nix mit dem skript wie ichs geplant hatte face-sad

Verzeichnis kann nicht erstellt werden - X:\001150594c:
0 Datei(en) kopiert
Fehler beim Erstellen der Datei - Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbez
eichnung ist falsch.
bastla
bastla 20.04.2011 um 12:43:50 Uhr
Goto Top
Hallo mosepe!

Einen hab ich noch:
for /r "%dir%" %%i in ("%file%") do xcopy "%%i" "%bckdrv%%bckdir%%%~pni_%zeit%%%~xi*"
bzw kürzer:
for /r "%dir%" %%i in ("%file%") do xcopy "%%i" "%bckdrv%%bckdir%%%~pni_%zeit%.*"
- hätte den zusätzlichen Effekt, dass der Dateityp erhalten bleibt ...

Grüße
bastla
bastla
bastla 20.04.2011 um 12:46:26 Uhr
Goto Top
Hallo mosepe!

Da warst Du um einige Sekunden zu schnell (konkret: bevor ich "%%~di" auf "%%~pi" korrigiert hatte).

Sollte jetzt aber egal sein - siehe weiter unten (12:43:50 Uhr) ...

Grüße
bastla
99045
99045 20.04.2011 um 12:51:50 Uhr
Goto Top
Speziell für mosepe face-smile

Auch du könntest die Formatierungshilfe im Eingabefenster nutzen, um den Formatierungen in den Beiträgen auszugeben.
mosepe
mosepe 20.04.2011 um 12:58:46 Uhr
Goto Top
ES FUNKTIONIERT. MUAHAHAHAHA !

VIELEN DANK!
Biber
Biber 20.04.2011 um 13:19:08 Uhr
Goto Top
[OT] @99045
Zitat von @99045:
Speziell für mosepe face-smile

Auch du könntest die Formatierungshilfe im Eingabefenster nutzen, um den Formatierungen in den Beiträgen auszugeben.

Im Prinzip ja.
Aber bei diesem Prachtstück sieht es auch codeformatiert grottig aus
@echo off
REM Variablen Setzen
set dir=c:\
REM !!BITTE ENTSPRECHEND ANPASSEN!!
set file=*.pst
set endung=.pst
set pfad=C:\Data
REM Erstellung der Zeitvariable
set h=%time:~0,2%
set m=%time:~3,2%
set s=%time:~6,2%
set ms=%time:~9,2%
set zeit=%date%_%h%h%m%m%s%s%ms%ms
REM Sucht nach Dateien und kopiert diese in einen Unterordner im oben angegebenen
REM Verzeichnis. Der Name des Unterordner Setzt sich aus 
REM "Dateiname_Dateiendung_Datum_Uhrzeit mit milisekunde" zusammen.  
for /r "%dir%" %%i in ("%file%") do (  
if exist %%i xcopy "%%i" "%pfad%\%%~ni%endung%_%zeit%\" /V /S /I)  
[/OT]

P.S.
set zeit=%date%_%h%h%m%m%s%s%ms%ms
*laaaaaaaaaaaaaaaaaaaaach*
mosepe
mosepe 20.04.2011 um 14:16:04 Uhr
Goto Top
Hier der nun funktionierende PST-Sicherungsteil des allgemeinen Sicherungsskripts.

:PST
set dir=c:\
set file=*.pst
set endung=.pst
set ms=%time:~9,2%
set zeit=%date%_%ms%ms
for /r "%dir%" %%i in ("%file%") do xcopy "%%i" "%bckdrv%%bckdir%%%~pni.*"
goto Sicherung
mosepe
mosepe 20.04.2011 um 14:27:51 Uhr
Goto Top
hoffe nur das ich das auf win2k, vista so benützen kann..muss ich noch durchtesten.

win7 gehts !