Jump to content

Robocopy Attribute richtig gesetzt?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

wenn du während der Synchronisation die Prozent angaben im DOS Fenser sehen willst, dann muss du neben dem Pfad das >> %logf% entfernen. Machst du es nicht siehst du im Dos Fenster die Prozentangaben nicht, aber der komplette Vorgang mit allem was kopiert und evtl. nicht kopiert wurde steht dann in der LOG Datei, meineserachten ist es viel angenehmer, da du dann besser auswerten kannst.

Link zu diesem Kommentar

Also, ich habe nun das Skript einmal angepasst und es funktioniert wunderbar. Das einzige was ich noch gerne ändern würde wäre, dass es das Datum und die Uhrzeit nicht nur in das Log-File schreibt, sonder dass das Logfile dann auch umbennant wird und als neuer Dateiname das Datum steht.

 

Statt wie bis jetzt Backup.txt sollte es dann 23.01.06.txt heissen oder alternativ Logfile vom 23.01.06.txt.

 

Sollte doch irgendwie mit dem rename Befehl machbar sein, aber leider weiss ich nicht genau wie...

Link zu diesem Kommentar

Ich habe im Internet folgendes Skript gefunden wo ein ähnliches Problem gelöst wurde. Ich kriege es aber nicht ganz hin, damit es mir nur den Dateiname ändert...

 

echo

cls

set /a DATZ=1

for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set datum=%%d%%c%%b

for /F "tokens=1,2 delims=: " %%a in ('time /t') do set uhrzeit=%%a%%b

dir original_%datum%_*.txt /b 1>_dateiliste.tmp

find "original" _dateiliste.tmp /c >_dateianzahl.tmp

for /f "skip=1 tokens=1,2,3 delims=: " %%a in (_dateianzahl.tmp) do set /a DATZ=%%c

set /a DATZ=%DATZ%+1

if %DATZ% LSS 10 set DATZ=0%DATZ%

ren original.txt original_%datum%_%DATZ%_%uhrzeit%_.txt

del _dateiliste.tmp

del _dateianzahl.tmp

 

Kann mir vielleicht jemand einen Tipp geben wie ich es anpassen muss für meinen Zweck.

Link zu diesem Kommentar

Hi,

ich hoffe du kannst das anpassen, habe es getestet funktioniert auch

 

@echo off

 

@set logf=%HOMEDRIVE%\TMP\Backup.txt

If not exist %HOMEDRIVE%\TMP\Backup.txt mkdir %HOMEDRIVE%\TMP\

:start

echo * setzten von Datum und Uhrzeit/öffnen Logfile *

for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set datum=%%d%%c%%b

@echo S T A R T > %logf%

@date /t >> %logf%

@time /t >> %logf%

@echo. >> %logf%

echo Replizierung in Bearbeitung

robocopy.exe "PFAD" "PFAD" /MIR >> %logf%

 

echo Errorlevel: %errorlevel% >> %logf%

@echo. >> %logf%

ren original.txt original_%datum%_.txt

 

@set logf=

sleep 5

:Pause

exit

Link zu diesem Kommentar

Ich musste das Skript folgendermassen anpassen:

 

alt:

for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set datum=%%d%%c%%b

 

neu:

 

for /F "tokens=1,2,3,4 delims=. " %a in ('date /t') do set datum=%a_%b_%c%d

 

wenn ich danach Echo %datum% eingeben zeigt es mir das aktuelle Datum in meiner geünschten Form an:

 

24_01_2006

 

Wenn ich aber nun die Datei umbenennen will mit folgendem Befehl gibt es wieder einen Syntaxfehler:

 

rename backup.txt backup%datum%.txt

 

Was mache ich an diesem Befehl wieder falsch? :cry::cry::cry:

Link zu diesem Kommentar

Habe ich auch schon probiert, aber es führt leider immer noch zu einem Syntaxfehler.

 

Wenn ich aber folgendes eingebe, dann klappt es: rename backup.txt backupok.txt

 

Wenn ich aber mit der variablen die Datei umbenennen will gibt es einen Syntaxfehler, aber wenn ich echo %datum% mache, dann kann er die Variable umsetzten und es gibt keinen Fehler...

 

Was mache ich falsch?

Link zu diesem Kommentar

Hi,

ich habe gerade festgestellt das wenn du aus welchen gründen auch immer dein Backup am selben Tag händisch ausführen würdest, würde er es zwar machen aber am ende der batch wenn das rename kommt würde er dir sagen dass es die Datei gibt und er würde dann eine neue txt erstellen aber ohne Datum, deshalb folgende änderung ist von mir getestet und geht auch da kannst du dann mehrmals händisch dein backup anstoßen er würde immer deine aktuelle txt überschreiben. Vorteil: die Befehlszeile mit dem Rename kannst du dir sparen.

 

@echo off

 

@set logf=%HOMEDRIVE%\TMP\Backup_%date%_.txt

If not exist %HOMEDRIVE%\TMP\Backup_%date%_.txt mkdir %HOMEDRIVE%\TMP\

:start

echo * setzten von Datum und Uhrzeit/öffnen Logfile *

for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do set datum=%%d%%c%%b

@echo S T A R T > %logf%

@date /t >> %logf%

@time /t >> %logf%

@echo. >> %logf%

echo Replizierung in Bearbeitung

robocopy.exe "PFAD" "PFAD" /MIR >> %logf%

 

echo Errorlevel: %errorlevel% >> %logf%

@echo. >> %logf%

 

@set logf=

sleep 5

:Pause

exit

Link zu diesem Kommentar

Habe noch eine Zusatzfrage:

 

Ich möchte das mein Skript zuerst die Daten spiegelt mit Robocopy und dann ein Log macht das backup.txt heisst; danach soll beee die Datei backup.txt an meine E-Mail-Adresse senden; soweit so gut, bis hierhin funktionierts. Jetzt soll die backup.txt zu archivzwecken umbennent werden in backup_aktuelles Datum.txt und hier gibt es einfach wieder Probleme. Es führt den Befehl gar nicht aus und leider weiss ich nicht genau an was es liegt...

 

Hier das Skript:

********************************************

@echo off

 

@set logf=E:\Log\Backup.txt

If not exist E:\Log\Backup.txt mkdir E:\Log\

:start

echo * setzten von Datum und Uhrzeit/öffnen Logfile *

@echo S T A R T > %logf%

@date /t >> %logf%

@time /t >> %logf%

@echo. >> %logf%

echo Replizierung in Bearbeitung

robocopy.exe "C:\Dokumente und Einstellungen\Administrator\Desktop\Test" "C:\Dokumente und Einstellungen\Administrator\Desktop\Test 2" /MIR >> %logf%

 

echo Errorlevel: %errorlevel% >> %logf%

@echo. >> %logf%

 

@set logf=

sleep 5

 

:Pause

 

C:\Programme\Beee\beee.exe -s

sleep 5

 

:Pause

 

for /F "tokens=1,2,3,4 delims=. " %a in ('date /t') do set datum=%a_%b_%c%d

echo %datum%

rename E:\Log\Backup.txt Backup_%datum%.txt

 

sleep 5

 

exit

********************************************

Link zu diesem Kommentar
  • 2 Wochen später...
  • 2 Monate später...

Hallo

 

Ich habe da eine Frage, da ich diesen thread gesehen habe denke ich das mein Problem ähnlich ist.

 

Ich möchte den Ordner Favoriten 1:1 kopieren (Vergleichen der Ordner + Dateien und löschen überschüssige Dateien).

Es soll nach dem kopieren eine log Datei öffnen (die im TEMP Ordner erstellt wurde) mit einer Protokolierung aller Fehler (welche Dateien gelöscht wurden und welche kopiert und nicht kopiert wurden).

Das Eingabefenster sollte aber noch offen sein und auch dort sollte quasi die Ordner die gelöscht, kopiert und nicht kopiert wurden anzeigen.

 

Was muss ich an meinem Skript anpassen?

 

@ECHO OFF
CLS
color 0A
ECHO Die Datensicherung der Favoriten Datei wird gestartet ..
ECHO.

@set logf=C:\WINDOWS\Temp\Backup.txt
:start
echo * setzten von Datum und Uhrzeit/öffnen Logfile *
@echo S T A R T > %logf%
@date /t >> %logf%
@time /t >> %logf%
@echo. >> %logf%

robocopy.exe "D:\INSTALLATION PROGRAMME\Backup\Favoriten" "G:\INSTALLATION PROGRAMME\Backup\Favoriten" *.* /s /v /mir /x /r:1 /w:1 /TEE /X /V 

if errorlevel 16  echo  ***FATAL ERROR***  & goto end 
if errorlevel 15  echo FAIL MISM XTRA COPY & goto end 
if errorlevel 14  echo FAIL MISM XTRA      & goto end 
if errorlevel 13  echo FAIL MISM      COPY & goto end 
if errorlevel 12  echo FAIL MISM           & goto end 
if errorlevel 11  echo FAIL      XTRA COPY & goto end 
if errorlevel 10  echo FAIL      XTRA      & goto end 
if errorlevel  9  echo FAIL           COPY & goto end 
if errorlevel  8  echo FAIL                & goto end 
if errorlevel  7  echo      MISM XTRA COPY & goto end 
if errorlevel  6  echo      MISM XTRA      & goto end 
if errorlevel  5  echo      MISM      COPY & goto end 
if errorlevel  4  echo      MISM           & goto end 
if errorlevel  3  echo           XTRA COPY & goto end 
if errorlevel  2  echo           XTRA      & goto end 
if errorlevel  1  echo                COPY & goto end 
if errorlevel  0  echo    --no change--    & goto end
if not ERRORLEVEL 1 goto log 
if not ERRORLEVEL 2 goto log 
if not ERRORLEVEL 3 goto log 
if not ERRORLEVEL 4 goto log 
if not ERRORLEVEL 5 goto log 
if not ERRORLEVEL 6 goto log 
if not ERRORLEVEL 7 goto log 
if not ERRORLEVEL 8 goto log 
if not ERRORLEVEL 9 goto log 
if not ERRORLEVEL 10 goto log 
if not ERRORLEVEL 11 goto log 
if not ERRORLEVEL 12 goto log 
if not ERRORLEVEL 13 goto log 
if not ERRORLEVEL 14 goto log 
if not ERRORLEVEL 15 goto log 
if not ERRORLEVEL 16 goto log
if not ERRORLEVEL 1 goto send 
if not ERRORLEVEL 2 goto send 
if not ERRORLEVEL 3 goto send 
if not ERRORLEVEL 4 goto send 
if not ERRORLEVEL 5 goto send 
if not ERRORLEVEL 6 goto send 
if not ERRORLEVEL 7 goto send 
if not ERRORLEVEL 8 goto send 
if not ERRORLEVEL 9 goto send 
if not ERRORLEVEL 10 goto send 
if not ERRORLEVEL 11 goto send 
if not ERRORLEVEL 12 goto send 
if not ERRORLEVEL 13 goto send 
if not ERRORLEVEL 14 goto send 
if not ERRORLEVEL 15 goto send 
if not ERRORLEVEL 16 goto send  
:end
echo.

echo Errorlevel: %errorlevel% >> %logf%
@echo. >> %logf%

pause

 

Danke im voraus für die Hilfe

 

Elena

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...