Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 28923 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

Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Batch & Shell
Nur aktuelle Dateien kopieren (3)

Frage von icke.hausen zum Thema Batch & Shell ...

Batch & Shell
gelöst Script: Dateien kopieren, Benamung anhang von Attributen (4)

Frage von Flexxa zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...