89485

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 140156

Url: https://administrator.de/forum/unsichtbares-kopieren-von-daten-140156.html

Ausgedruckt am: 22.05.2025 um 14:05 Uhr

maretz
maretz 08.04.2010 um 14:16:00 Uhr
Goto Top
robocopy - damit kannst du das machen...
89485
89485 08.04.2010 um 14:22:55 Uhr
Goto Top
Hi Maretz,

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

LG
bastla
bastla 08.04.2010 um 14:23:54 Uhr
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
89485
89485 08.04.2010 um 14:27:27 Uhr
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???
Biber
Biber 08.04.2010 um 14:58:55 Uhr
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
89485
89485 08.04.2010 um 15:32:45 Uhr
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
Biber
Biber 08.04.2010 um 15:58:17 Uhr
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
89485
89485 08.04.2010 um 16:06:30 Uhr
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
Biber
Biber 08.04.2010 um 16:15:38 Uhr
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
89485
89485 08.04.2010 um 17:56:39 Uhr
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
bastla
bastla 08.04.2010 um 18:36:14 Uhr
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
Biber
Biber 08.04.2010 um 18:44:35 Uhr
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
89485
89485 09.04.2010 um 06:57:35 Uhr
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]
bastla
bastla 09.04.2010 um 23:38:37 Uhr
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
89485
89485 10.04.2010 um 10:04:05 Uhr
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