89485
Goto Top

Unsichtbares Kopieren von Daten

Hi Leute,

ich hätte mal eine Frage:

wie kann ich bei dem Befehl xcopy (z.B. bei Backups oder normalen Kopiervorgängen) in einem Batch hinterlegen, dass ich nicht immer sehe...

Datei xyz wurde von C:\test nach D:\test kopiert...

Was ich aber noch sehen will, ist am Ende die Zeile XXX Datei(en) kopiert.

Hätte da jmd ein paar Tipps für mich?

Danke schon mal

Content-Key: 140156

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

Printed on: April 16, 2024 at 19:04 o'clock

Member: maretz
maretz Apr 08, 2010 at 12:16:00 (UTC)
Goto Top
robocopy - damit kannst du das machen...
Mitglied: 89485
89485 Apr 08, 2010 at 12:22:55 (UTC)
Goto Top
Hi Maretz,

muss ich für Robocopy extra Tool nachinstallieren, oder ist das ein Standard CMD-Befehl?

LG
Member: bastla
bastla Apr 08, 2010 at 12:23:54 (UTC)
Goto Top
Hallo Batchliebhaber und willkommen im Forum!
Hätte da jmd ein paar Tipps für mich?
Falls ein Tipp auch reicht: Verwende den Schalter "/q" ...face-wink

Grüße
bastla
Mitglied: 89485
89485 Apr 08, 2010 at 12:27:27 (UTC)
Goto Top
Danke für die Willkommensgrüße =D

danke für die Lösung

geht es auf noch perfektioniert, dass das Fenster minimiert ist, und erst aufpoppt, wenn der Kopiervorgang fertig ist???
Member: Biber
Biber Apr 08, 2010 at 12:58:55 (UTC)
Goto Top
Moin Batchliebhaber,

willkommen im Forum.
Zitat von @89485:
geht es auf noch perfektioniert, dass das Fenster minimiert ist, und erst aufpoppt, wenn der Kopiervorgang fertig ist???
Sagen wir so - könnte zurechtgefrickelt wrden, aber das hat nun erst recht nichts mit "perfektioniert" zu tun.

Batch = von Ansatz her eigentlich unbeaufsichtigter Ablauf, im Normalfall sogar ohne BenutzerInneninteraktion.
Von daher zieh ich ja noch mit beim "unsichtbar laufen lassen". Solange denn alles "zur Sicherheit" in irgendeiner Logdatei steht.

Aber "unsichtbar laufen lassen" und dann doch wieder eine vom User zu bestätigende Info hochpoppen lassen... nö.
Diskutier erst mal mit dir aus, ob du nun linksrum oder rechtsrum gehen willst, ob die Infos nun wurscht oder nicht wurscht sind, ob du nun SOFORT wissen willst, ob 45320 Dateien in 3249 Verzeichnissen kopiert wurden oder ob du es bei Bedarf aus eine Logdatei holen willst.

Eigentlich kommt das Word "Batch" aus dem altgälischen und bedeutet soviel wie "erst den Plan zu Ende denken".

Grüße
Biber
Mitglied: 89485
89485 Apr 08, 2010 at 13:32:45 (UTC)
Goto Top
Hi Biber,

ja du hast schon recht mit meinen "hohen" Ansprüchen....

Cool wäre es schon, aber was nicht geht, geht halt mal nicht xD

in dem Fall wäre mir dann das mit dem Logfile am liebsten,...

kannst du mir in der Richtung dann vielleicht ein paar Tipps geben, dass ich meinen Plan (der schon am Ende ist) verwirklichen kann??? =D

LG
Member: Biber
Biber Apr 08, 2010 at 13:58:17 (UTC)
Goto Top
Moin Batchliebhaber,

wenn denn dieser XCOPY-lauf regelmäßig und unbeaufsichtigt vor sich hin schwurbeln soll, dann würde ich ihn über den Taskplaner halt jeden Freitag nachmittag dazu verdonnern.
Und du richtest dem kleinen vorher noch irgendwo ein Tobe-Verzeichnis :D:\XcopyLogs ein und sagt ihm mit dem Umleitungszeichen ">", dass er alles, was er nicht für sich behalten kann dort in eine Datei schreibt.
Am besten in eine Datei, die im Dateinamen noch das Datum mitschleppt (hast du irgendwo in einem Parallelthread ja schon gezeigt, wie das gehen könnte).

Wenn auch noch eventuelle Fehlermeldungen mit ins Log sollen dann zusätzlich zum ">D:\XlopyLog\{%FormatiertesDatum%}.log" noch ein "2>&1" dazu.

Grüße
Biber
Mitglied: 89485
89485 Apr 08, 2010 at 14:06:30 (UTC)
Goto Top
hi,

du wirst dir auch denken, wie doof stellt sich denn der an =D

aber wie kann ich da noch einstellungen schreiben lassen?

LG B.Liebhaber
Member: Biber
Biber Apr 08, 2010 at 14:15:38 (UTC)
Goto Top
Moin Batchliebhaber,

Zitat von @89485:
aber wie kann ich da noch einstellungen schreiben lassen?
Öhhm, kannst du diese Frage bitte umformulieren?
Ich weiss momentan nicht ganz genau, welche Einstellungen wie wo von wem geschrieben werden möchten...

Grüße
Biber
Mitglied: 89485
89485 Apr 08, 2010 at 15:56:39 (UTC)
Goto Top
klar sorry


also du hast mir ja den Tipp mit dem Logfile gegeben....

aber mir schreibt er lediglich "@echo off" ins Logfile...

daher weiß ich net, wie ich die Kopierdaten ins Logfile bringe xD

LG
Member: bastla
bastla Apr 08, 2010 at 16:36:14 (UTC)
Goto Top
Hallo Batchliebhaber!

Es hat sich als sinnvoll erwiesen, (Batch-)Code, der nicht tut was er soll, einfach mal zu posten (es gibt hier sogar eine passende ) ...

Grüße
bastla
Member: Biber
Biber Apr 08, 2010 at 16:44:35 (UTC)
Goto Top
Moin Batchliebhaber,

okay, also dann.... angenommen, deine Sicherungsdatei besteht eigentlich aus der Zeile:
@XCopy f:\temp\*.* z:\bla\ /s {weitere XCopy-Parameter} /q 
... und du wolltest sowohl "normale Vollzugsmeldungen" wie "xxx Dateien kopiert" wie auch Fehlermeldungen in ein Logfile schreiben, dann so:
@XCopy f:\temp\*.* z:\bla\ /s {weitere XCopy-Parameter} /q >d:\XcopyLogs\XC{datumsangabe}.log 2>&1

...wobei statt {datumsangabe} dann irgendwas eingesetzt werden könnte, was JJJJMMTT repräsentiert und aus %date% zusammengebastelt würde.
In meiner d:\XcopyLogs\XC20100408.log würde dann z.B. stehen:
>type d:\XcopyLogs\XC20100408.log
Ungültige Laufwerkangabe
0 Datei(en) kopiert
...wobei die erste Zeile eine Fehlermeldung wäre, die mit " 2>&1" eingefangen wurde und "0 Datei(en) kopiert" eine "normale Vollzugsmeldung".

Grüße
Biber
Mitglied: 89485
89485 Apr 09, 2010 at 04:57:35 (UTC)
Goto Top
Guten Morgen,

also danke schon mal für alle Tipps =D

ich habs vorerst mal so gelöst...
@echo off
cls
cd\
set Quelle="G:\skripte\test\*"  
set Ziel="C:\Backup\"  
set Zielunterverz=%date:~0,2%.%date:~3,2%.%date:~6%
set letztex=7

xcopy "%Quelle%" "%Ziel%%Zielunterverz%" /s /c /i /f /h /k /o /x /y  


if %letztex% gtr 0 (
set "skiptext=skip=%letztex% "  
) else (
set "skiptext="  
)

FOR /F "%skiptext%delims=" %%i in ('dir "%Ziel%" /B /AD /O-D') do rd /s /q "%%i"  

echo. Am %Zielunterverz% wurde erfolgreich gesichert. >> "C:\Backup\Backup.log"  
echo. >> "C:\Backup\Backup.log"  
echo.:::::::::::::::::::::::::::::::::::::::::: >> "C:\Backup\Backup.log" 
echo. >> "C:\Backup\Backup.log"  


pause
Kann man das so lassen, oder ist es unlogisch aufgebaut?

LG


[Edit Biber] Codetags nachgetragen. [/Edit]
Member: bastla
bastla Apr 09, 2010 at 21:38:37 (UTC)
Goto Top
Hallo Batchliebhaber!

Vorweg: Der Batch sollte so funktionieren, daher betreffen meine Anmerkungen eigentlich nur Stilfragen ...
Die Zeile 3 ist definitiv entbehrlich (Du verwendest ja sinnvoller Weise ohnehin nur absolute Pfade), und das "cls" gäbe es bei mir auch nicht.

In den Zeilen 4 bis 5 würde ich die Anführungszeichen nicht zum Inhalt der Variablen machen, wenn dann ohnehin bei der Verwendung der Variablen (und hier wäre meine Vorgangsweise gleich) Anführungszeichen gesetzt werden.

So, wie Du derzeit %Zielunterver% festlegst, würde auch ein simples
set "Zielunterverz=%date%"
zum selben Ergebnis führen, mir aber nicht gefallen, da ich ein Datumsformat "JJJJ-MM-TT" (schon aufgrund der besseren Sortierbarkeit) bevorzuge.

Schließlich böte es sich noch an, den Pfad zur Logdatei ("C:\Backup\Backup.log") ebenfalls bereits vorweg in einer Variablen festzulegen, wodurch es wesentlich einfacher wird, diesen bei Bedarf abzuändern.

Grüße
bastla
Mitglied: 89485
89485 Apr 10, 2010 at 08:04:05 (UTC)
Goto Top
Hi,

also des mit cls und cd\ mach ich einfach gewohnheitsmäßig inzwischen immer....

Meine Momentane Lösung sieht so aus..

@echo off
title Backup Version 1.01.1
color A4
cls
cd\
set Quelle=0
set Ziel=0
echo.
echo.
echo ++++++++++++++++++++++++++++++++++++++++++++++
echo + +
echo + Batch zur Backuperstellung +
echo + +
echo ++++++++++++++++++++++++++++++++++++++++++++++
echo.
echo.
echo Bitte geben Sie den Quellpfad an:
echo.
set /p Quelle=
echo.
echo Bitte geben Sie den Zielpfad für das Backup an:
echo.
set /p Ziel=
echo.
set Zielunterverz=%date:~6%-%date:~3,2%-%date:~0,2%
set Ordner=%date:~6%-??-??
set Anzahl=3

xcopy "%Quelle%" "%Ziel%%Zielunterverz%" /s /c /i /h /k /o /x /y
pause
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Ziel%%Ordner%"') do rd /s /q "%Ziel%%%i"

echo. Am %Zielunterverz% wurde erfolgreich gesichert. >> "%Ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"
echo.:::::::::::::::::::::::::::::::::::::::::: >> "%ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"


pause


Gut des am Anfang ist nur fürs Auge

LG