zwiebelkopf
Goto Top

xcopy mit Zeitausgabe

Hi ihr da draußen

Gleich mal meine Frage:

Gibt es irgendeine Möglichkeit die Dauer auszugeben die beim Kopieren mit xcopy entsteht??
(soll in eine "backup.log" geschrieben werden)
Ich bräuchte das für jede Datei oder Ordner die kopiert wurden damit man gleich sieht bei welcher Datei er abgebrochen hat.

Content-ID: 12268

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

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

11078
11078 23.06.2005 um 16:00:50 Uhr
Goto Top
Hallo,

xcopy hat keine interne Möglichkeit, auszugeben, wie lange es zum Kopieren benötigt hat. Du könntest Dir aber helfen, indem Du vor und nach jedem Kopiervorgang die Uhrzeit über %time% abfragst und das in die Logdatei schreibst.

Gruß,
TIM
Zwiebelkopf
Zwiebelkopf 23.06.2005, aktualisiert am 30.03.2023 um 01:26:05 Uhr
Goto Top
Hi, habs glei mal Probiert weis aber nicht wo das hin sollte?:

xcopy %Quelle% %Ziel% /C /D /E /H /R /Y  >>%windir%\backup.log
11078
11078 23.06.2005 um 17:27:57 Uhr
Goto Top
Hallo,

hab leider auch gerade gemerkt, dass es nicht wirklich geht. Ich bin aus irgendeinem Grund davon ausgegangen, dass Du mit Schleifen rekursiv durch die Verzeichnisse wanderst und kopierst. Das macht xcopy aber selber und man kann in die Ausgabe von xcopy nichts mehr einfügen.

Ansonsten hätte ich mir das in etwa so gedacht (ungetestet):

set start=%time%

set /p zu_kopierende_datei= | xcopy %Quelle% %Ziel% /C /D /E /H /R /Y


set ende=%time%


echo "%start% %ende% %zu_kopierende_datei%" >>%windir%\backup.log  

Ist die Frage, ob das überhaupt geklappt hätte... Sorry, kann doch nicht weiterhelfen.


Gruß,
TIM
linkit
linkit 23.06.2005 um 17:34:03 Uhr
Goto Top
wenn dir protokollierung so wichtig ist, warum verwendest du dann nicht robocopy von Microsoft.... ist viel Leistungsfähiger als xcopy und du kannst alles protokollieren lassen.

http://www.it-administrator.de/aktuell/13643.html
http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff- ...


dazu gibt es super Frontends.... damit kannst du ein deine Batchdatei per Klickserstellen,

beispiel: http://www.wintotal.de/softw/index.php?rb=43&id=2339
meinereiner
meinereiner 23.06.2005 um 17:51:52 Uhr
Goto Top
machs doch so...

Echo Startzeit %date% %Time% >>xcopy.log
xcopy (hastenicht gesehen)
Echo Endzeit %date% %Time% >>xcopy.log
Dann schreibt er in die Datei xcopy.log Start- und Endzeit


wobei Linkit recht hat robocopy ist für sowas besser..
Biber
Biber 23.06.2005 um 18:16:48 Uhr
Goto Top
Moin Zwiebelkopf,

schließe mich linkit und meinereiner an..
@meinereiner: fast das gleiche Posting hatte ich auch grad fertig

Zusatz: wenn Du in diesen monströsen Logdatei auch lesen willst, weshalb XCopy verreckt ist (meistens "Zugriff verweigert"), dann musst Du noch eine Umleitung mehr dranhängen.

XCopy %Quelle% %Ziel% /C /D /E /H /R /Y /F  1>>xcopy.log  2>>&1

Der /F-Parameter schreibt Quell- und zusätzlich Zieldatei incl. Pfad mit.

Falls dein XCopy bisher abbricht, weil der Quellserver mal Offline geht: dafür gibt es noch den etwas lieblos dokumentierten Parameter /Z.
Dadurch wird XCopy "wieder aufgenommen", sobald der Server wieder erreichbar ist.

Interessehalber: Aus welchen Gründen bricht denn bei Dir der XCopy bisher ab?

Frank / der Biber aus Bremen
8644
8644 23.06.2005 um 20:08:58 Uhr
Goto Top
Hi @all,

darf ich als Laie mal fragen, wie man aus der Kopierzeit lesen kann,
welche Datei warum nicht kopiert wurde?
meinereiner
meinereiner 23.06.2005 um 21:14:18 Uhr
Goto Top
darf ich als Laie mal fragen, wie man aus
der Kopierzeit lesen kann,
welche Datei warum nicht kopiert wurde?


kann man nicht.
Das wird bei Bibers batch aber mit ">>xcopy.log 2>>&1" mitgeloggt.
Wobei ich eher " 2 >> xcopy.log" schreiben würde, da dann nur die Fehler mitgeloggt werden und nicht jeder Kopiervorgang.
Biber
Biber 23.06.2005, aktualisiert am 30.03.2023 um 01:26:54 Uhr
Goto Top
face-wink
@meinereiner,

gute Anregung, würde ich auch gern so machen wie Du vorschlägst..

aber dann sieht die Logdatei so aus:

Start Xcopy 01.04.2005 18:39
Zugriff verweigert
Zugriff verweigert
Zugriff verweigert
Ende Xcopy 01.04.2005 19:01

auf meine bin ich ja auch nicht wirklich stolz:

Start Xcopy 01.04.2005 18:39
Datei1.xyz
Datei2.xyz
Datei3.xyz
Datei4.xyz                     
Zugriff verweigert
Datei5.xyz
Zugriff verweigert
Datei6.xyz
...
... (weitere 23m Fließtext ohne echte Handlung)
...
Datei39234.txt
Zugriff verweigert
.....
Ende Xcopy 01.04.2005 19:01


( Datei4.xyz hat nicht geklappt; Fehler leider nicht in der gleichen Zeile... )


Aber wenn ich auf die Umleitung von stderr verzichte, stehen nur die Dateinamen im Logfile (ohne die Zeile "Zugriff verweigert" darunter).

Die einzige Möglichkeit, die ich sehe, mit XCopy tatsächlich eine reine Errorlog-Datei zu schreiben, wäre: Xcopy in einen 20-Zeilen-Batch zu packen, rekursiv durch die Quellverzeichnisse zu wackeln und jede zu kopierende Datei einzeln mit Xcopy anzufassen.
Und wenn es nicht klappt, Datum/Uhrzeit, Dateiname und Fehlergrund wegzuschreiben.
Ähnlich wie Tim es oben andeutet.

Ist machbar, ist aber
a) stinkelangsam
b) albern, ausgerechnet die Rekursivität, die xcopy schon bietet, noch mal nachzubilden *gg
c) außerdem schon längst erfunden (ob robocopy oder was kommerzielles)


Frank / der Biber aus Bremen
meinereiner
meinereiner 23.06.2005 um 22:33:06 Uhr
Goto Top
@Biber

stimmt du hast recht.
Ich hatte mich schon gewundert warum du das so schriebst..hätte halt mal besser drüber nachdenken sollen.. face-wink
Zwiebelkopf
Zwiebelkopf 24.06.2005 um 09:40:37 Uhr
Goto Top
Hi danke an alle für die Antworten!
Wegen robocopy: wo gibts den das für W2k??
Das mit der Start und endzeit hab ich auch schon drinne, bringt aber bei fehlern keine endzeit!
außerdem hab ich mal Copyrite XP ausprobiert bricht aber immer wieder ab wegen Dateien die aktualisiert werden. (Nach neustart gleiche Spiel von vorne).
Biber
Biber 24.06.2005 um 10:21:47 Uhr
Goto Top
Moin Daniel,

ich habs gestern schon geschrieben:
[..]
Die einzige Möglichkeit, die ich sehe, mit XCopy tatsächlich eine reine Errorlog-Datei zu schreiben, wäre: Xcopy in einen 20-Zeilen-Batch zu packen, rekursiv durch die Quellverzeichnisse zu wackeln und jede zu kopierende Datei einzeln mit Xcopy anzufassen.
Und wenn es nicht klappt, Datum/Uhrzeit, Dateiname und Fehlergrund wegzuschreiben.
[..]

Wenn Du diese 20 Zeilen haben willst UND es am Wochenende regnet UND nichts im Fernsehen kommt, kann ich die mal zusammenbraten... ist zwar ein büschen albern (s.u.), aber in zwei Hinsichten ist XCopy schon ein feines Tool:

-XCopy kopiert/überschreibt auch Dateien mit Versteckt/System/ReadOnly-Attributen
-XCopy kommt auch mit geöffneten Dateien klar

Heißt nur... diese beiden Fälle bekomme ich mit einer anderen Quick&Dirty-Bllig-Lösung wie *.vbs nicht ohne Verrenkung gebacken; möchte schon bei xcopy bleiben.

Aber -wie auch schon geschrieben- wenn Du die 300000 Dateien statt mit EINEM XCopy/Robobocopy/TrallalaCopy-Aufruf mit insgesamt 300001 in einem Batch verpackten XCopy-Aufrufen einzeln kopierst, könnte es einen Moment länger dauern.. (Zeit für ein oder zwei Snickers..)

Deshalb noch mal die Frage:
Wieso um Himmels willen verreckt denn Dein XCopy heute?
Wenn er/sie/es heute "hart" aussteigt, dann müsste doch laut M$-Doku zumindest ein Errorlevel zurückgegeben werden...welches denn?


Frank / der Biber aus Bremen
linkit
linkit 24.06.2005 um 12:06:09 Uhr
Goto Top
@Biber....


lustiges Pseudonym.... wie kamst auf die Idee ????


@author:


bezüglich Frage robocopy... du kanst fur w2k auch die W2k3 Version nehmen, funktioniert problemlos..... Dabei ist eine umfangreiche Dokumentation.

Bezüglich Rechte: mit welchem Benutzer startest du den Batchlauf ??? Schon mal überprüft, wenn so eine Datei übersprungen wird, ob du hierfür genügend Rechte hast ????
Zwiebelkopf
Zwiebelkopf 24.06.2005 um 12:50:37 Uhr
Goto Top
@linkit
Also ich hab volle admin rechte und noch ewigen hin und her hab ich dann auch robocopy für mein System entdeckt.Trotzdem Danke hätt da doch noch eine letzte Frage oder besser zwei:
1. Ist es möglich die Batchdatei (ohne in die gplanten Tasks zu müssen ) automatisch starten?
2. Kann man bei robocopy neben der Prozente auch Zeit/dauer angeben
Biber
Biber 24.06.2005, aktualisiert am 30.03.2023 um 01:27:24 Uhr
Goto Top
@linkit..... face-wink Das erzähl ich vielleicht mal bei einem Bier, wenn wir uns besser kennen..

@Daniel
menno, menno, menno...

Lass mal diesen 20-Zeiler laufen, damit wir endlich mal rausbekommen, wieso Dein XCopy verreckt...

:: -------snipp BibersXCopyMitLog.bat
@echo off
(SET Fromdir=D:\FOUND.000)              & REM Dieses Dir incl Subdirs und allem Zeuch soll kopiert werden
(SET ArchDir=D:\Misc\testit\Xcopytest)  & REM Das ist mein Spielordner; solltest Du anpassen
(SET ErrLogfile=xcopyError.Log)         & REM Das ErrorlogFile; bei mir keine Gesamtprotokollierung,; nur Fehler
(SET OKLogfile=NUL)                     & REM LogDatei für die Nicht-Problem-Fälle; kann auch CON oder das File %ErrLogfile% sein
(SET CopyLst=AllFiles2CopyLog.tmp)      & REM Hier stehen alle Dateien die XCOPY kopieren würde 
Echo Start %~n0 %date% %time% >>%ErrlogFile%
XCOPY "%Fromdir%\*.*" "%ArchDir%" /E /C /I /F /Y /H /L /D |find /v "Datei(en) kopiert">%CopyLst%  
FOR /F "tokens=1,* delims=>" %%i IN (%CopyLst%) DO CALL :loop "%%i" "%%j"  
GOTO ThatsAllFolks
:loop
(SET FromFile=%1)                       & SET ToFile=%2
(SET FromFile="%FromFile:~1,-3%")       & SET ToFile="%ToFile:~2,-1%"  
XCopy %FromFile% %ToFile%  /F /Y /H /R 1>nul 2>Oneliner.txt
If Errorlevel 0  ( echo %time:~0,5% From %Fromfile% >%OkLogfile%) & ( echo To   %ToFile% ) >>%OkLogfile%
If Errorlevel 1  For /F "tokens=*" %%a IN (Oneliner.txt) do ( echo %time:~0,5% [%%a] ErrLevel=%errorlevel%  From %Fromfile% To %ToFile% ) >>%ErrLogfile%  
goto :eof
:ThatsAllFolks
(Echo Ende %~n0 %date% %time% >>%ErrlogFile%)  & IF DEFINED DEBUGMYBATCHES type %ErrLogFile%
:: -------snapp BibersXCopyMitLog.bat
 
Hinweis zum Testen:
- eine schreibgeschützte Datei mitsichern, bei mir die "D:\FOUND.000\FILE0010.CHK"
- Parameter /D oben beim ersten XCOPY weglassen (zum Testen einfach alle Dateien nehmen, damit wir was sehen)
- oben beim zweiten XCopy-Aufruf den Parameter /R weggelassen zum Test (soll bei Readonly auf eine Mine Laufen).

Beim zweiten Start sieht die Logdatei so aus:

-----snipp xcopyError.Log-------
Start BibersXCopyMitLog Fr 24.06.2005 19:38:08,86
19:38 [Zugriff verweigert] ErrLevel=4  From "D:\FOUND.000\FILE0010.CHK" To "D:\Misc\testit\Xcopytest\FILE0010.CHK"  
Ende BibersXCopyMitLog Fr 24.06.2005 19:38:12,48
-----snapp xcopyError.Log-------

@Daniel: nimm das Bätchelchen, pass die paar Parameter an und lass es laufen.
Und morgen poste bitte diese doofe LogDatei.
Und übermorgen bitte ein Kistchen Becks per UPS nach Bremen... face-wink

Frank / der Biber aus Bremen