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 Wie kann man in einer Batch Dateien miteinander vergleichen?

Mitglied: D3ns007

D3ns007 (Level 1) - Jetzt verbinden

22.07.2009, aktualisiert 10:45 Uhr, 4586 Aufrufe, 10 Kommentare

Folgendes Szenario: Dateien (Dateinamen) sollen miteinander verglichen werden die unter verschiedenen Pfaden zu finden sind. Danach sollen Dateien die im Verzeichniss A und B zu finden sind aus A rausgelöscht werden. Alle anderen Dateien sollen von A nach B kopiert werden.

Ich hab mir gedacht das eine If-Anweisung hier am sinnvollsten ist. Leider kenne ich die Syntax nicht und weiß auch nicht wie man sagt "DU Datei 12345.mdb aus Verzeichnis A vergleiche dich mit allen *.mdb im Verzeichnis B"

Könnt Ihr mir auf die Sprünge helfen?
Dazu hier mein eigentlicher Quellcode:

(Es sollen damit Dateien in Ziparchive komprimiert werden)

01.
@Echo off 
02.
 
03.
set source="D:\Module\Zip-Archive" 
04.
 
05.
Pushd "%source%" 
06.
For /F "Delims=" %%A in ('Dir /B/A-D "D:\Module\Zip-Archive\01-*.mda"') Do call :ZipIt "%%~fA" 
07.
Popdrem 
08.
Del "D:\Module\Zip-Archive\01-*.mda" 
09.
Goto :Eof 
10.
:ZipIt 
11.
Set "Zip=%~n1" 
12.
Set "Zip=%archive%%Zip:~0,9%.zip" 
13.
"C:\Program Files\7-Zip\7z.exe" u "%Zip%"  %1


Vielen Dank im voraus
D3ns!007
Mitglied: bastla
22.07.2009 um 11:12 Uhr
Hallo D3ns!007!

Die Anforderung "DU Datei 12345.mdb aus Verzeichnis A vergleiche dich mit allen *.mdb im Verzeichnis B" ließe sich (gleich für alle ".mdb" des %source%-Verzeichnisses) ungetestet etwa so umsetzen:
01.
@echo off & setlocal 
02.
set "source=D:\Module\Zip-Archive" 
03.
set "dest=D:\Archive" 
04.
set "ext=mdb" 
05.
 
06.
for %%i in ("%source%\*.%ext%") do ( 
07.
    set dupe= 
08.
    echo Vergleiche %%i 
09.
    for %%a in ("%dest%\*.%ext%") do fc /b "%%i" "%%a">nul && set dupe=true 
10.
    if defined dupe echo del "%%i" 
11.
12.
REM Verbliebene Dateien kopieren 
13.
REM copy "%source%\*.%ext%" "%dest%"
Für ein entspanntes Testen steht vor dem "del" noch ein "echo", damit der Löschbefehl nur angezeigt wird ...

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
22.07.2009 um 11:29 Uhr
Hallo bastla,
also das Script vergleicht fröhlich vor sich hin. Nur gibt es da ein Problem.
Es sollen jeden Tag ungefähr 1000 Dateien so verglichen werden und das dauert bei knappen 20 Testdateien schon ganz schön lange. Kann man das beschleunigen?

Aber Danke natürlich für die schnelle Hilfe!

Bisher zeig die Console an das die Dateien verglichen werden...

Grüße
Dens!007
Bitte warten ..
Mitglied: bastla
22.07.2009 um 11:39 Uhr
Hallo D3ns!007!

Da jede Datei mit jeder anderen verglichen werden muss, dauert das natürlich ...

Flotter wären auf Derartiges spezialisierte Tools (als ein Beispiel etwa CloneSpy) - wieweit sich diese aber autmatisieren lassen, habe ich noch nie untersucht ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
22.07.2009 um 12:02 Uhr
Hallo zusammen!

Eventuell könnte man den Vergleich ja auf den Datei-Namen, Größe und DateLastModified beschränken.

Gruß Dieter
Bitte warten ..
Mitglied: D3ns007
22.07.2009 um 13:23 Uhr
Ja genau so hatte ich mir das auch schon überlegt... aber Wie?
Ein Vergleich des DAteinamens würde mir schon ausreichen.
Bitte warten ..
Mitglied: bastla
22.07.2009 um 13:30 Uhr
Hallo D3ns!007 und didi1954!

Soferne die Dateigröße als Kriterium taugt, etwa mit folgender neuen Zeile 9:
for %%a in ("%dest%\*.%ext%") do if %%~zi eq %%~za fc /b "%%i" "%%a">nul && set dupe=true
[Edit] Zu spät gesehen ...
Ein Vergleich des DAteinamens würde mir schon ausreichen.
In diesem Fall:
if exist "%dest%\%%~nxi" do fc /b "%%i" "%dest%\%%~nxi">nul && set dupe=true
oder ohne Vergleich des Inhaltes:
if exist "%dest%\%%~nxi" do set dupe=true
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
22.07.2009 um 13:33 Uhr
Kann man einen Vergleich des Namens auch noch realisieren?

Und gibt es ein paar Einschlägige Seiten auf denen man Übungsmaterial zu diesen Scripts findet?
=> Hatte bisher nicht das gefundne was ich mir vorstelle.

Grüße
D3ns!007
Bitte warten ..
Mitglied: D3ns007
22.07.2009 um 13:57 Uhr
Das Script ist jetzt bei weitem schneller wie vorher nur löscht es die Dateien die überprüft wurden und nach "Dest" kopiert wurden nicht aus der "Source" raus.

Nachdem der Vergleich gemacht wurde soll ja entsprechend entweder gelöscht werden oder kopiert und gelöscht werden.

Wisst Ihr da vielleicht Rat?

Der Quelltext bisher sieht so aus:


01.
 
02.
@echo off & setlocal 
03.
set "source=C:\Test\Source" 
04.
set "dest=C:\Test\Dest" 
05.
set "ext=mda" 
06.
 
07.
for %%i in ("%source%\*.%ext%") do ( 
08.
set dupe= 
09.
echo Vergleiche %%i 
10.
for %%a in ("%dest%\*.%ext%") do if exist "%dest%\%%~nxi" do fc /b "%%i" "%dest%\%%~nxi">nul && set dupe=true 
11.
if defined dupe echo del "%%i" 
12.
13.
REM Verbliebene Dateien kopieren 
14.
copy "%source%\*.%ext%" "%dest%" 
15.
 
16.
 
17.
 
18.
Pushd "%dest%" 
19.
For /F "Delims=" %%A in ('Dir /B/A-D "%dest%\*.%ext%"') Do call :ZipIt "%%~fA" 
20.
Popdrem 
21.
Del "%dest%\*.%ext%" 
22.
Goto :Eof 
23.
:ZipIt 
24.
Set "Zip=%~n1" 
25.
Set "Zip=%archive%%Zip:~0,9%.zip" 
26.
"C:\Program Files\7-Zip\7z.exe" u "%Zip%"  %1

Grüße
D3ns!007
Bitte warten ..
Mitglied: bastla
22.07.2009 um 14:08 Uhr
Hallo D3ns!007!

Eigentlich sollte es ja genügen, die Nicht-Duplikate zu kopieren und am Ende alle Dateien zu löschen, daher neue Zeile 11:
if not defined dupe copy "%%i" "%dest%"
und neue Zeile 14
del "%source%\*.%ext%"
Als Zeile 10 sollte übrigens genügen:
if exist "%dest%\%%~nxi" do fc /b "%%i" "%dest%\%%~nxi">nul && set dupe=true
Die obigen Zeilen sind (da kein "echo" vor dem "del" verwendet wurde) "scharf" geschaltet und löschen tatsächlich.

Grüße
bastla
Bitte warten ..
Mitglied: D3ns007
22.07.2009 um 17:23 Uhr
Danke für die Hilfe!

Problem wurde gelöst...
Grüße
D3ns!007
Bitte warten ..
Ähnliche Inhalte
Microsoft
Tabellen miteinander vergleichen
Frage von Acht85Microsoft1 Kommentar

Hallo Community, ich habe 2 Tabellen mit Namen (die auch unterschiedlich geschrieben sein können, baer nicht mehrmals auftauchen) und ...

Batch & Shell
Batch vergleich von zwei dateien
gelöst Frage von realdavegerBatch & Shell6 Kommentare

Hallo, nach Jahrelangem zugucken, habe ich jetzt schlussendlich eine Frage welche ich selbst stelle. Ich versuche 2 zeiten aus ...

Batch & Shell
Batch vergleiche Dateien mit Zeitstempel
gelöst Frage von Streuner1Batch & Shell5 Kommentare

Hallo, ich möchte mit einer batch in einem Ordner Dateien mit einem Zeitstempel suchen, vergleichen, kopieren und löschen. Möglichkeiten: ...

Batch & Shell
Batch Vergleichen von Dateien
gelöst Frage von BlaberBatch & Shell2 Kommentare

Hallo Leute, ich habe ein kleines Problem bei einer Batch-Datei. In dieser versuche ich zwei Text-Dateien miteinander zu vergleichen, ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 6 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 16 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...