Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit Xcopy NUR nicht vorhandene Dateien kopieren

Frage Entwicklung Batch & Shell

Mitglied: theuncle

theuncle (Level 1) - Jetzt verbinden

17.11.2005, aktualisiert 27.02.2007, 31437 Aufrufe, 13 Kommentare

Mit Boardmitteln sprich XCOPY in einer Batch nur "NICHT VORHANDENE" Dateien in ein Verzeichnis kopieren!

Hallo Leute,

ich als alter Batchfanatiker und "Verfechter immer zur Verfügung stehender Befehle" (also OHNE ROBOCOPY) benötige eine Batch welche NUR nicht vorhandene Dateien in ein Verzeichnis kopiert.

Beispielereignis:

Verzeichnis Daten auf einem Server gelöscht und mit Recoverytool nur unvollständig in ein Testverzeichnis wieder hergestellt. Datensicherung ist etwas älter und wird ersteinmal wieder an die ursprüngliche Position kopiert. Nun sollen nur nicht vorhandene Dateien aus dem wiederhergestellten Verzeichnis in das neue "alte" Datenverzeichnis kopiert werden.

On Top wäre eine optionale Funktion für das Ausklammern von Null-grossen Dateien - die defekten bzw. nur schlecht restaurierten Dateien halt.

So könnte man sicherstellen nur voll funktionsfähige alte Dateien im Datenordner zu haben und nur die rel. intakten NEUEN (nicht vorhandenen) Dateien kopiert zu haben. Deswegen nützt mir der Schalter -D nicht so viel.

Vielen Dank im voraus für Eure Hilfe. Biber, ich erwarte, wie immer, godlike-Leistungen

CU der Onkel Olli
Mitglied: SexyHexe
18.11.2005 um 02:19 Uhr
Hallo,

also so wie ich das sehe, bietet XCOPY keine Option so etwas zu machen.

Grüsse,
SexyHexe
Bitte warten ..
Mitglied: theuncle
18.11.2005 um 08:25 Uhr
Halli hallo,

deswegen habe ich die Anfrage ja auch in den Bereich Batchprogrammierung gesetzt, da ich weiss, dass es mit xcopy so nicht geht, allerdings mit einer Batch evtl. zu realisieren ist ...

CU Olli
Bitte warten ..
Mitglied: Biber
18.11.2005 um 09:35 Uhr
Moin Tee-Onkel,

ich würde das "Problem" eigentlich trennen.
Diese 0-Byte-Dateien würde ich einmalig löschen. Wenn ich dich richtig verstanden habe, kannst Du mit denen ja eh nie wieder etwas anfangen.

Alle 0-Byte-Dateien vom CMD-Prompt aus ansehen oder löschen geht ja fix:
(anschauen) FOR /R startverzeichnis %f in (*.*) do @if %~zf equ 0 @ECHO %~ftzf
(löschen) FOR /R startverzeichnis %f in (*.*) do @if %~zf equ 0 @del %~ff

Zwischen "anschauen" und "löschen" kann natürlich noch eine Entscheidungsphase liegen. Denn nicht alle 0-Byte-Dateien sind "unsinnig"- manche sind ja nur als "Flag-Dateien" gedacht und sollen gar keinen Inhalt haben.
Deshalb ist hier kein Batch sinnvoll, sondern eben die zwei CMD-Zeilen.

Anyway, back to thread - Du wolltest ja alles in einer Batch haben. Ich nenne die Quell- und Zielverzeichnisse mal q:\quell und z:\ziel.
Hint: ich gebe dem XCopy hier auch Parameter ( /h /r ) mit für "versteckte/Schreibgeschütze" etc. Ggf. ändern.

01.
::------ snipp T-OnkelsRestore.bat 
02.
@echo off & setlocal & set "XCopyParms=/y /h /r /i /e" 
03.
xcopy q:\quell z:\ziel /u /l %XCopyParms% >"%temp%\Exclude.txt" 
04.
FOR /R q:\quell %%f in (*.*) do if %%~zf equ 0 ECHO %%~ff >>"%temp%\Exclude.txt" 
05.
REM gestrichen ---xcopy q:\quell z:\ziel %XcopyParms% /exclude:"%temp%\Exclude.txt"  
06.
REM gestrichen --- siehe Beiträge/Bugmeldung unten 
07.
xcopy q:\quell z:\ziel %XcopyParms% /exclude:%temp%\Exclude.txt 
08.
::------ snapp T-OnkelsRestore.bat
Mimik:
(0.te Zeile ist die "@echo off..." die zähl ich nicht mit)
In der 1. Zeile werden alle Dateien, die auch schon im Zielverzeichnis existieren, in eine Datei geschrieben.
In der 2. Zeile werden alle 0-Byte-Dateien an diese Datei angehängt.
in der 3. Zeile wird tatsächlich etwas getan.

Thats all.

HTH
Biber
Bitte warten ..
Mitglied: cookie
18.11.2005 um 09:50 Uhr
Hallo Olli.

Das geht ganz einfach, indem du am schluss die Option /mir mitgibst. alle dateien welche erneuert oder hinzugefügt wurden werden kopiert, die anderen nicht.

Gruss
Cookie
Bitte warten ..
Mitglied: theuncle
01.12.2005 um 21:09 Uhr
Hallo Bibber ,

so ich schreibe diesen Text jetzt zum zweiten Mal, da ich mal wieder vergessen habe
vorher mir eine Kopie in meine Zwischenablage zu legen.

Gott im Himmel dieser Mist, wenn man mal 3 Min den Browser alleine lässt und sich dann neu einloggen kann und der gesamte Text weg iss ... das sollte hier auch mal verbessert werden. Aber das nur nebenbei. Diesmal mach ichs kürzer ....

Ich melde mich leider erst jetzt zurück, da ich nach einem kurzen Ausprobieren der Batch
leider keine Zeit mehr gefunden hatte mich damit intensiver zu beschäftigen.

Ich weiss nicht, ob das ein win2k winxp-Problem iss und evtl. sich mal wieder nur ein
paar Konsolenausgaben oder Befehle geringfügig verändert haben. Langer Rede kurzer Sinn, ich habs nur auf nem Win2K-System getestet. (Wie z.B. bei der date-Ausgabe
... hat mich bei automatisch generierten Datumsverzeichnissen bei Datensicherungen schon eine Menge Nerven gekostet.)

Fehlermeldung auf die For-Schleife bezogen:

"~zf" ist syntaktisch an dieser Stelle falsch.

Der Exlude.txt wird korrekt erstellt und enthält die beiden ebenfalls in dem anderen Verzeichnis vorkommenden Dateien (zum Test) mit Pfadangabe.

Vielleicht weisst Du ja woran es liegt.

Vielen Dank im voraus

MfG der Onkel Olli =
Bitte warten ..
Mitglied: Biber
01.12.2005 um 21:32 Uhr
Moin, Olli,
schön Dich zu lesen... hab schon befürchtet, Du hättest doch lieber eine Umschulung zum Pizzabäcker begonnen, weil Dir das zu viele Bätch-Zeilen waren..

Okay, ist mit furchtbar peinlich, aber oben in der zweiten echten Zeile habe ich wieder ein paar %-Zeichen vergessen (ich habs naturlich wieder nur am Prompt "getestet" und danach aus eigentlich allen "%" -Zeichen ein "%%" gemacht... dachte ich)...

Falsch:
FOR /R q:\quell %f in (*.*) do if %~zf equ 0 ECHO %%~ff >>"%temp%\Exclude.txt"
Richtiger im Batch:
FOR /R q:\quell %%f in (*.*) do if %%~zf equ 0 ECHO %%~ff >>"%temp%\Exclude.txt"

Ich verbessere es oben!!
Kann sein, dass noch irgendwelche 0-Byte-Dateien mit Leerzeichen durchs Raster fallen, weil die in Anführungszeichen gesetzt werden müssen (also "%%~ff") .. den Fall hab ich vernachlässigt. Kommt eher selten vor..

Nun sollte es durchlaufen (wie gesagt, habs oben berichtigt!).
Grüße Biber
Bitte warten ..
Mitglied: theuncle
09.12.2005 um 19:26 Uhr
Hay Bibber,

habe die Zeilen angepasst, nur leider schmeisst er die Fehlermeldung aus:

Datei c:\test5\Exclude.txt kann nicht gelesen werden.
0 Dateien kopiert.

(Habe mir die Freiheit genommen den %temp% rauszunehmen, da dort die gleiche Fehlermeldung kam und ich sicherstellen wollte, dass die Batch darauf zugreifen kann.)

In der Exclude-Datei stehen die richtigen in dem Verzeichnis vorhandenen Dateien drin. Where is the problem. Was könnte ich übersehen haben ...

Vielleicht haste noch eine Idee ... thanx ..

Der Onkel
Bitte warten ..
Mitglied: Biber
09.12.2005 um 21:36 Uhr
Sorry, Olli,
mea culpa, mea culpa...
Hat mir neulich schon der User hammel geschrieben: Wer lesen kann, ist klar im Vorteil. Hätte ich drauf hören sollen...
Ich war zu vorsichtig wegen eventueller Leerzeichen im %temp%-Path und habe deshalb die Datei nach dem "/exclude"-Parameter in Anführungszeichen gesetzt. Das nimmt Xcopy übel, wenn Pfad und Dateiname keine Leerzeichen enthalten.

also bitte nochmal ändern:

REM Bullshit xcopy q:\quell z:\ziel %XcopyParms% /exclude:"%temp%\Exclude.txt"
xcopy q:\quell z:\ziel %XcopyParms% /exclude:%temp%\Exclude.txt
[Edit] Bugfix oben im Batch nachgezogen [/Edit]
bzw.
xcopy q:\quell z:\ziel %XcopyParms% /exclude:c:\test5\Exclude.txt

Ich versuche mich zu bessern... demnächst fange ich an, meine Schnipsel zu testen...

P.S. Dass man/frau bei diesem Parameter überhaupt eine Datei mit einer Liste von Dateien übergeben kann, ist im höchsten Maße undokumentiert.
Aus der "XCopy /?"-Hilfe:
.... 
/EXCLUDE:Datei1[+Datei2][+Datei3]... 
          Gibt eine Liste von Zeichenfolgen an. Wenn eine der 
          Zeichenfolgen Teil des absoluten Verzeichnispfads 
          der zu kopierenden Datei ist, wird diese Datei vom 
          Kopiervorgang ausgeschlossen. Beispiel: Bei der 
          Zeichenfolge \obj\ oder .obj werden alle Dateien 
          unterhalb des Verzeichnisses OBJ bzw. alle Dateien mit 
          der Erweiterung .obj vom Kopiervorgang ausgeschlossen. 
           
.....
Also berufe Dich nicht auf mich und erzähl es um Himmels Willen nicht weiter.

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: theuncle
10.12.2005 um 15:38 Uhr
Jawolle,

da hätte ich eigentlich drauf kommen sollen. Aber wie immer, sieht man die Batch vor
lauter Anführungszeichen nicht.

Sehr schön, ich habe zwar damals das nicht mit dieser Batch lösen können und musste zu Fuss
(und wir wissen, wie sehr das einem Informatiker missfällt ggg*) mit dem Kunden zusammen
diese Daten rauspopeln. Es hat sich damals im Übrigen nur ein Verlust von 13 Dateien ergeben, von denen sogar nur 3 relevant waren. Zum Glück war der Grossteil in der SQL-Datenbank...

und wenn da der Onkel nicht mittlerweile einen Enterprise-Wartungsplan eingerichtet hätte mit automatischer Sicherung, hätten wir uns erschiessen können ...

Diese Batch wird Ihre Anwendung in Zukunft auf unseren Install-Support-CDs oder USB-Sticks
mit Sicherheit finden.

Nochmals, however, VERY THANX ... gg* wie immer sehr hübsch...

Schönes WE ...

Der Onkel

P.S.: Nette Grüsse von unserer Tips-Datenbank, diese Batch wollte Sie haben.
Bitte warten ..
Mitglied: Biber
10.12.2005 um 15:57 Uhr
Na Gottseidank, Tee-Onkel,

endlich haben wir die Kuh vom Eis... *drei-Kreuze-mach**

Gruß zurück an die Tipp-Datenbank - wenn die wollen, tipp ich das auch noch mal in sauber ab und schreib ein paar Kommentare dazu. Sonst setz wenigstens noch folgende Zeile rein, falls Rückfragen kommen:
:: Biberware -- Placed in the Public Domain 2005 -- biber3@hotmail.de

Schönes Rest-Wochenende
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: theuncle
10.12.2005 um 16:37 Uhr
Hay Bibber*,

die Tipsdatenbank heisst Maggy und ist eine virtuelle Person in unserer Firma, welche
von uns liebevoll gehegt und gepflegt wird. Ihr Gemütszustand und Ihre Aufnahmebereitschaft
sind demnach untrennbar mit der Laune der Mitarbeiter verbunden.

Weisst ja, wenn jemand Schuld hat .. ist es Maggy .... und NIE ein anderer.
Maggy ist übrigens die Cousine von "Weiss-ICH-NICHT" und "WAR-ICH-NICHT" ... unseren
beiden bestbezahltesten Mitarbeitern

Sie sind ja auch für die meisten Arbeiten verantwortlich.
So, genug gespammt ...

CU der Tee-Onkel
Bitte warten ..
Mitglied: xhs-computerman
27.02.2007 um 11:28 Uhr
Moin-moin,

auch wenn schon etwas Zeit vergangen ist, anbei die Lösung für alle weiteren, die wie ich übrigens auch, nach der Lösung für "mit xcopy nur "nicht vorhandene" Dateien kopieren wollen.

Dein Problem läßt sich mit der Option /d:M-T-J lösen.
Die Option /d kopiert nur die an oder nach einem Datum geänderten Dateien.
Ist kein Datum angegeben, werden nur Dateien kopiert, die neuer als die bestehenden Zieldateien sind. Also: Falls alle Dateien bereits vorhanden sind, werden keine Dateien kopiert.
War das hilfreich ? Mir hat genau diese Funktion bei meinem Problem geholfen...

LG xhs-computerman
Bitte warten ..
Mitglied: Biber
27.02.2007 um 17:47 Uhr
Moin, xhs-computerman,

willkommen im Forum.

Natürlich hast Du Recht mit dem XCopy-Parameter /D, den theUncle ja auch in seiner Eröffnungsfrage erwähnt.

Das Problem in seinem Fall war ja, dass durchaus aktuellere Dateien in der Quelle (der nur teilweise defekten restaurierten Vollsicherung) vorliegen können - neueres Datum, aber ohne Inhalt. Da nützt der /D-Parameter ausnahmsweise nichts, sondern schadet eher.

Für diesen Spezialfall war dieser merkwürdige Workaround.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Namensänderung beim kopieren (xcopy)
gelöst Frage von Groja2Batch & Shell12 Kommentare

Hallo zusammen, ich hatte bereits einen Beitrag geschrieben ) wie ich eine Datei ersetzen kann. Bin dann abschließed dazu ...

Batch & Shell
FTP mit wput nur vorhandene Dateien im Ziel kopieren
gelöst Frage von Otto1699Batch & Shell7 Kommentare

Hallo, ich habe Dateien auf einer Windows Maschine und Dateien auf einer Linux Maschine im gleichen Netzwerk. Nun möchte ...

Batch & Shell
Xcopy jedoch nur die Dateien die nicht älter
gelöst Frage von zeroblue2005Batch & Shell13 Kommentare

Hallo Zusammen, Wie kann ich diese Script anpassen, so dass aus der Quelle nur die Dateien kopiert werden, die ...

Batch & Shell
Xcopy Batch-Datei
gelöst Frage von LauchheimerBatch & Shell3 Kommentare

Tag Leute, Ich habe in einer Batchdatei einen xcopy-Befehl. Dieser soll eine bestimmte Datei kopieren. Diesen führe ich mit ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.