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

Vergleiche den Inhalt von 3 Verzeichnisse anhand des geändert am Datums und lösche die nicht Übereinstimmungen

Frage Entwicklung Batch & Shell

Mitglied: christiankarl

christiankarl (Level 1) - Jetzt verbinden

15.05.2013 um 11:24 Uhr, 2351 Aufrufe, 11 Kommentare

Hallo,

leider kenne ich mich in Scripten nicht wirklich aus.
Ich habe folgendes Problem, welches ich gerne per VBS/Batch Script lösen möchte:

in 3 verschieden Verzeichnissen kann es vorkommen, dass Dateien von unterschiedlichen Tagen liegen, der Dateiname selber spielt keine Rolle.
Nun möchte ich folgendes herausfinden:
Vergleiche den Inhalt der 3 Verzeichnisse anhand des „geändert am“ Datums und lösche alle Dateien, welche nicht identisch sind.
3 Zeitstempel -> OK
1 oder 2 Zeitstempel nicht vorhanden, lösche entsprechende vorhandene Datei(en)

Besteht hier überhaupt die Möglichkeit eines solchen Vergleiches, wenn ja wie müsste eine solche Datei aussehen?

Gruß
Christian
Mitglied: Endoro
15.05.2013, aktualisiert um 11:34 Uhr
Hallo Christian,

es sollen nur Zeitstempel "geändert am" verglichen werden?
Wieviele Dateien liegen denn in den Verzeichnissen?

Es könnten also Dateien in allen drei Verzeichnissen gelöscht werden?

Gruss.
Bitte warten ..
Mitglied: christiankarl
15.05.2013 um 12:05 Uhr
Hallo Endoro,
Richtig, alle Dateien in allen Verzeichnissen sollen gegeneinander geprüft werden
und wo der Zeitstempel "geändert am" nicht identisch ist, sollen alle nicht Übereinstimmungen gelöscht werden.

In den jeweiligen Verzeichnissen können maximal 20 Dateien liegen.

Gruß
christian
Bitte warten ..
Mitglied: Endoro
15.05.2013, aktualisiert um 14:04 Uhr
Das ist eine witzige Aufgabe
.. deswegen muss ich noch mal über die Logik nachdenken.


Gruss!
Bitte warten ..
Mitglied: christiankarl
15.05.2013 um 15:17 Uhr
Dann bin ich doch mal auf das Ergebnis gespannt
Bitte warten ..
Mitglied: bastla
15.05.2013, aktualisiert um 16:29 Uhr
Hallo christiankarl!

Meinst Du "Datum" oder "Zeitstempel" (also inkl Uhrzeit)?

Der Dateiname soll ja keine Role spielen - genügt es daher, wenn (zumindest) eine beliebig benannte Datei aus jedem der beiden anderen Ordner das gleiche Änderungsdatum aufweist?

Falls sowohl Datum als auch Uhrzeit in den Vergleich einbezogen werden soll und die Antwort auf die zweite Frage "ja" lautet, könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "V1=D:\Ordner" 
03.
set "V2=D:\Anderer Ordner" 
04.
set "V3=D:\Ganz anderer Ordner" 
05.
set /a Anz=3 
06.
 
07.
for /L %%i in (1,1,%Anz%) do ( 
08.
    for /f "tokens=1-2" %%a in ('call dir /a-d "%%V%%i%%"^|findstr /b "[0-3][0-9]\.[0-1][0-9]\."') do >>%temp%\%%i.txt echo %%a %%b 
09.
10.
 
11.
for /L %%i in (1,1,%Anz%) do ( 
12.
    call pushd "%%V%%i%%" 
13.
    call echo Bearbeite "%%V%%i%%" 
14.
    for /f "delims=" %%f in ('dir /b/a-d') do ( 
15.
        set OK=true 
16.
        for /L %%j in (1,1,%Anz%) do findstr /lc:"%%~tf" "%temp%\%%j.txt">nul||set "OK=" 
17.
        if not defined OK echo del %%f 
18.
19.
    popd 
20.
)
Wegen des "echo" vor "del" in Zeile 17 läuft der Batch im "Demo"-Modus - es werden die Löschbefehle nur angezeigt, aber nicht ausgeführt ..

Grüße
bastla

P.S.: Da es sich nur um wenige Dateien handelt, dürfte das Vergleichen mit allen 3 Ordnern anstatt nur mit den beiden anderen performancemäßig zu verschmerzen sein ...
Bitte warten ..
Mitglied: Endoro
15.05.2013, aktualisiert um 17:57 Uhr
Hmmm, ich hab noch überlegt: findstr und Tempdatei oder ... bastla war schlauer

01.
@echo off&setlocal 
02.
set "V1=Verzeichnis1" 
03.
set "V2=Verzeichnis2" 
04.
set "V3=Verzeichnis3" 
05.
 
06.
for %%i in ("%V1%" "%V2%" "%V3%") do ( 
07.
	pushd "%%~i" 
08.
	for %%j in (*) do for /f "tokens=1,2delims=:" %%a in ("%%~tj") do set "$%%~i|%%~j=%%a%%b"&set "#%%~i%%a%%b=%%a%%b" 
09.
	popd 
10.
11.
for %%i in ("%V1%" "%V2%" "%V3%") do for %%j in ("%V1%" "%V2%" "%V3%") do if "%%~i" neq "%%~j" ( 
12.
	for /f "tokens=1-3delims=$|=" %%a in ('set "$%%~i" 2^>nul') do ( 
13.
		setlocal enabledelayedexpansion 
14.
		set "test=!#%%~j%%~c!"  
15.
		if not defined test ( 
16.
			endlocal 
17.
			echo del "%%a\%%b" 
18.
			set "$%%~a|%%~b=" 
19.
		) else endlocal 
20.
21.
)
Wenn im Verzeichnis oder Dateinamen "=" oder ":" sind, geht der Code nicht. Die Verzeichnisse können also nur ohne Laufwerk angegeben werden (also zB "\user\dokumente"), warum das so ist konnte ich nicht rausfinden (Batch halt).

Gruss!
Bitte warten ..
Mitglied: christiankarl
16.05.2013 um 10:50 Uhr
Hallo, ich danke euch beiden für die Hilfe,

eine kleine änderungsanfrage habe ich da aber noch:

besteht die Möglichkeit, bevor die Dateien gelöscht werden, das diese in ein "archiv" zu kopieren,
oder anstatt zu löschen, direkt in ein Archiv zu verschieben

01.
  
02.
 
03.
set "V1=D:\Ordner"  
04.
set "V2=D:\Anderer Ordner"  
05.
set "V3=D:\Ganz anderer Ordner"  
06.
 
07.
set "A1=D:\Ordner Archiv" 
08.
set "A2=D:\Anderer Ordner Archiv"  
09.
set "A3=D:\Ganz anderer Ordner Archiv"  
10.
 
Bitte warten ..
Mitglied: Endoro
16.05.2013 um 12:04 Uhr
Hallo christiankarl,

das kannst du eine Zeile über dem "del" Kommando einfügen

Gruss!
Bitte warten ..
Mitglied: christiankarl
16.05.2013, aktualisiert um 12:19 Uhr
Hallo Bastla,

nochmalig danke,

zu deiner Frage: Meinst Du "Datum" oder "Zeitstempel" (also inkl Uhrzeit)?


ich meine nur Datum, keine Uhrzeit

habe aber ein kleines Problem festgestellt:

z.b. Beispiel 1

Verzeichnis1 3 Dateien
12.05
06.05
03.05

Verzeichnis2 2 Dateien
07.05
09.05

Verzeichnis3 0 Dateien

Ergebnis erwartet = 0
Ergebnis erhalten, alle Dateien bleiben im Ordner


Beispiel 2

Verzeichnis1 2 Dateien
12.05
13.05

Verzeichnis2 1 Dateien
12.05

Verzeichnis3 1 Dateien
04.05

Ergebnis erwartet = 0
Ergebnis erhalten, alle Dateien bleiben im Ordner

Keines der Verzeichnisse hat ein Vorrang. Die Verzecihnisse sollen sozusagen Syncronisiert werden, sprich in allen Ordnern sollem immer nur die gleichen Dateien vom Datum her sein.

Vielleicht hilft es, dass in allen Dateien am Ende immer ein Zeitstempel mit im Dateinamen aufgeführt wird. z.b.
test1234_32423_test_20130416-1116171
Bitte warten ..
Mitglied: christiankarl
16.05.2013 um 12:18 Uhr
@ Endoro,
aber dann erfolgt doch noch keine durchführung der archivierung oder?
Bitte warten ..
Mitglied: Endoro
16.05.2013 um 20:34 Uhr
Hallo christiankarl,

du kannst den Dateinamen vor dem Löschen abgreifen und die Dateien mit einem Packer deiner Wahl archivieren. Der Rest ist ja sonst erledigt

Gruss!
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Daten vergleichen bei Übereinstimmung drucken
Frage von GregDanielsMicrosoft Office6 Kommentare

Hallo, ich steh grad auf dem Schlauch. Ich möchte eine Abfrage in Excel bauen und komme nicht weiter. Meine ...

Windows 7
Ordner vergleichen, bei gleichem Datum, Inhalt zusammenführen
Frage von ConcurveWindows 73 Kommentare

Guten Tag, ich würde bei einem "Problem" Hilfe benötigen. Leider bin ich was *.bat angeht ziemlich Ahnungslos und hoffe ...

Batch & Shell
Datum vergleichen
gelöst Frage von Klaus20Batch & Shell11 Kommentare

Hallo Zusammen, vielleicht kann mir jemand (wie schon öfters) mir bei einer Abfrage helfen. Ich möchte gerne falls das ...

Batch & Shell
älteste Verzeichnisse samt Inhalt per CMD löschen
gelöst Frage von StefanK007Batch & Shell1 Kommentar

Hallo zusammen, ich beschreibe mal mein Szenario, vielleicht hat jemand noch eine bessere Lösung. 1. Ein Tool erstellt täglich ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...