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

Datei überprüfen, vergleichen, löschen und kopieren

Frage Entwicklung Batch & Shell

Mitglied: Nemthor

Nemthor (Level 1) - Jetzt verbinden

30.09.2009 um 12:44 Uhr, 5908 Aufrufe, 9 Kommentare

Hallo zusammen,

hab ein kleines Problem. Ich hab einen Ordner, indem immer akteulle Datein gespeichert werden. Die Dateien möchte ich in einen neuen Ordner kopieren, sobald neue erzeugt worden sind.

Ich hab es soweit hinbekommen, dass in dem orignal Ordner die Datei gesucht wird und kopiert und im zweiten die Daten vorher gelöscht werden. Mein Code sieht so aus:
01.
:Start 
02.
Del /S /Q "C:\Daten\NeuerOrdner\test"  
03.
xcopy C:\Daten\NeuerOrdner\over_m*.* C:\Daten\NeuerOrdner\test 
04.
ping -n 30 localhost >NUL 
05.
GOTO Start
funktioniert auch, nur ich möchte es so in der Art erweitern:
01.
:Start 
02.
 
03.
Ist im Ordner Test bereits die aktuelle Datei erhalten springe zu "BOX 2" 
04.
Ist die Datei nicht identisch springe zu "BOX 1" 
05.
 
06.
:box1 
07.
echo Neue Datei... 
08.
Del /S /Q "C:\Daten\NeuerOrdner\test"  
09.
xcopy C:\Daten\NeuerOrdner\over_m*.* C:\Daten\NeuerOrdner\test 
10.
 
11.
 
12.
:box2 
13.
ping -n 20 localhost >NUL 
14.
GOTO Start
Könnte mir da jemand behilfich sein?
Wär super.

Danke.
Gruß
Mitglied: bastla
30.09.2009 um 14:29 Uhr
Hallo Nemthor!

Du erwähnst immer nur eine Datei, daher nehme ich an, dass es sich tatsächlich nur um eine Datei (aber mit unterschiedlichem Namen) in den beiden Ordnern handelt. Auf Basis dieser Annahme könnte das (ungetestet) so gehen:
01.
:Start 
02.
for %%i in ("C:\Daten\NeuerOrdner\over_m*.*") do set "Neu=%%i" 
03.
for %%i in ("C:\Daten\NeuerOrdner\test") do set "Alt=%%i" 
04.
fc /b "%Neu%" "%Alt%">nul && goto :box2 
05.
 
06.
echo Neue Datei... 
07.
del "%Alt%"  
08.
copy "%Neu%" C:\Daten\NeuerOrdner\test 
09.
 
10.
:box2 
11.
ping -n 20 localhost >NUL 
12.
GOTO Start
Grüße
bastla
Bitte warten ..
Mitglied: Nemthor
30.09.2009 um 15:24 Uhr
Hallo bastla,

das funktioniert leider nicht so richtig. Ich glaub ich hab mich etwas falsch ausgedrückt.

In dem Ordner "NeuerOrdner" befinden sich ca. 20 Datein. 2 davon beginnen mit "over_m", enden jedoch unterschiedlich (over_m2342323 und over_m3321245465). Diese 2 Datein sollen in den Ordner "Test" kopiert werden. Soweit hab ich es selbst hinbekommen.

Jetzt mein Problem, der Ordner "NeuerOrdner" aktualisiert seine 20 Datein ca alle 3 Minuten. Sprich die alten 20 Daten werden gelöscht und durch die neuen ersetzt. Sobald dies passiert ist, sollen die 2 kopierten Daten im Ordner "Test" gelöscht werden und durch die neuen ersetzt werden. Ich hab mir jetzt gedacht, ich lass die Batch alle xx Sekunden durchlaufen und überprüfen ob eine neue Datei im Ordner "NeuerOrdner" vorhanden ist.

Ich hatte meine Batch erst so eingestellt, dass es alle 185 Sekunden ausgeführt wird. Problem, der Ordner "NeuerOrdner" kann sich auch schon nach 2 Minuten aktualisieren oder erst nach 10 Minuten, deswegen würde ich gerne alle 20 Sekunden die Batch laufen lassen.

Gibt es vielleicht eine besser Methode?
Bin für alles offen

Danke schonmal.
Gruß
Nemthor
Bitte warten ..
Mitglied: bastla
30.09.2009 um 15:55 Uhr
Hallo Nemthor!

Was spricht dagegen, die Dateien auf jeden Fall zu kopieren? Wenn sie unterschiedlich sind, ist's ohnehin erforderlich, und wenn sie den gleichen Inhalt haben, sollte es doch auch egal sein, ob die am Zielort vorhandene Datei durch die neue Datei ersetzt wird ...

Ansonsten hast Du mit "fc /b" ein Werkzeug, um einen binären Vergleich durchzuführen - sind die beiden Dateien gleich, erhältst Du einen Errorlevel 0, ansonsten 1 (vereinfacht lässt sich das per "&&" bzw "|" auswerten bzw dazu benutzen, bedingt einen oder mehrere Befehle auszuführen. Voraussetzung ist dafür, dass die Dateinamen bekannt sind oder sich auf andere Art (Dateigröße) eine Zuordnung der Dateien treffen lässt.

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
30.09.2009 um 16:06 Uhr
Hi Nemthor,

bastla's script läuft alle 20 Sekunden.

ping -n 20 localhost >NUL

Dein Problem muss noch etwas anderes sein.
Mal schauen!

Gruß
Tsuki
Bitte warten ..
Mitglied: 60730
30.09.2009 um 16:41 Uhr
Servus,

ich würde das anders anfassen..

01.
:start 
02.
ping n-20 localhost >nul 
03.
dir /tc C:\Daten\NeuerOrdner\over_m*.* |find "%date:~-4%" >C:\Daten\NeuerOrdner\log.log 
04.
dir /tc C:\Daten\NeuerOrdner\test\over_m*.* |find "%date:~-4%" >C:\Daten\NeuerOrdner\test\log.log 
05.
fc C:\Daten\NeuerOrdner\log.log C:\Daten\NeuerOrdner\test\log.log  && goto nix || goto copy 
06.
goto eof 
07.
:nix 
08.
echo nix 
09.
goto start 
10.
:copy 
11.
echo copy 
12.
:eof
fc ist gut aber bei größeren Daten auch lahm

gruß
Bitte warten ..
Mitglied: bastla
30.09.2009 um 16:55 Uhr
@TimoBeil
Wenn die Datei alle paar Minuten neu geschrieben wird, bringt der Vergleich des Erstellungsdatums vermutlich nix (ganz abgesehen davon, dass wegen der "ping"-Pause und des dadurch verzögerten Kopierens das Erstellungsdatum im Zielordner im Normalfall einige Sekunden hinten nach sein dürfte).

Wäre das Änderungsdatum als Vergleichskriterium verwendbar, ließe sich die ganze Aktion auf ein "xcopy /d" reduzieren.

Letzte Möglichkeit, um das "fc" zu vermeiden: Wenn die Dateien unterschiedliche Größe haben, steht fest, dass es eine neue Datei gibt - wenn allerdings die Größe gleich ist, kann sich der Inhalt dennoch unterscheiden.

Diese Überlegungen hängen aber in der Luft, solange wir noch nicht einmal wissen, ob die beiden Dateien immer den gleichen Namen tragen, und falls nicht, woran die jeweils zusammengehörigen zu erkennen sind ...

... und was dagegen spräche, ganz ohne Prüfung mit der neuen Version zu überschreiben.

Grüße
bastla
Bitte warten ..
Mitglied: 60730
30.09.2009 um 17:00 Uhr
Zitat von bastla:
@TimoBeil


@bastla
ich schrieb ja "ich würde es anders anfassen" - nicht besser und stimme deinen Einwänden 100% zu.

Grüße
bastla

zurück
Bitte warten ..
Mitglied: bastla
30.09.2009 um 17:26 Uhr
@TimoBeil
Du kennst mich doch sicher schon gut genug, um zu wissen, dass ich kein Problem mit besseren Lösungen habe - und Dein Hinweis darauf, "fc" nach Möglichkeit zu vermeiden, ist auch völlig berechtigt.

Mein "lautes Denken" war zwar an Dich adressiert, aber soll natürlich auch Nemthor Anhaltspunkte liefern, was er noch zum Entwickeln der Lösung beitragen könnte/sollte ...

Grüße
bastla
Bitte warten ..
Mitglied: Nemthor
01.10.2009 um 07:34 Uhr
Guten Morgen,

erst mal danke für die Antworten.

Ich hab gestern noch mal einiges getestet und bin zum Entschluss gekommen die Daten immer ohne Überprüfung zu überschreiben. Mein Problem ist halt, dass wenn die Datei im ungünstigens Fall ersetzt wird sich das "Show-Prog" aufhängt. Das umgeh ich aber jetzt, indem ich eine Rückmeldung von dem "Show-Prog" erwarte und fals keine Rückmeldung kommt der Prozess gekillt und neu gestartet wird.

Nochmal kurz was ich gemacht hab:

- Messsystem gibt in einem Ordner die aktuellen Werte und Bilder aus (ca. 20 Datein) cvs, avr, tif
- Mit Excel/VBA hol ich mir die cvs und Werte sie aus.
- Die Bilder sollen in einen neuen Ordner kopiert werden, und am Monitor ausgegeben werden. Das war auch hier mein Problem mit over_m. Die Bilder haben immer die gleiche Größe und beginnen mit over_m und einem angefügten Zeitstempel (over_m01102009072953 heißt 01.10.2009 07:29:53 Uhr)

Ich hatte anfangs die Bilder auch in Excel/VBA mit verwaltet und ausgegeben. Das ging eigentlich recht gut, Problem nach 3 monaten Datenmüll gabs öfters Probleme. Jetzt sollte es wieder passen. Danke für die Tipps.

Gruß
Nemthor
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Robocopy aktuellste Dateien kopieren und ältere Dateien löschen
gelöst Frage von semperf1delisWindows Tools4 Kommentare

Hallo zusammen, ich möchte gerne meine Backupdateien die auf einer internen Festplatte des Backupservers abgelegt werden auf meine externe ...

Batch & Shell
Zwei Verzeichnise Vergleichen und Nicht vorhandene Datei löschen
gelöst Frage von KodaCHBatch & Shell4 Kommentare

Guten Morgen Ich suche eine Möglichkeit um zwei Verzeichnisse ohne deren Unterverzeichnisse zu vergleichen und eine nicht vorhandene Datei ...

Windows Tools
Batch Verzeichnis vergleichen, in einer anderes kopieren
Frage von cappu25Windows Tools11 Kommentare

Halloo an alle, ich habe jetzt schon verdammt lange rumprobiert und gegooglet aber ich bekomme keine Lösung hin. Folgendes: ...

Batch & Shell
Batch Änderungsdatum von Dateien vergleichen und ältere löschen
gelöst Frage von 129528Batch & Shell10 Kommentare

Hallo zusammen, ich habe schon andere Artikel und Foreneinträge zu diesem Thema (siehe Titel) gelesen, aber noch keine eindeutige ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...