Dateiinhalte vergleichen - Gemeinsamkeiten anzeigen
Servus, liebe Gemeinde!
Ich suche ein Programm oder ein Batchfile, welches 2 Textdateien miteinander vergleicht und dann anzeigt, welche Zeichenkette in beiden vorhanden ist. Hintergrund: ich habe meine Filmsammlung auf mehrere Festplatten verteilt und bin mir sicher, daß ich manche Filme doppelt habe. Das möchte ich nur rausfinden und die doppelten löschen. Wollte dazu per
die Dateien in eine Textdatei auf dem jeweiligen Laufwerk schreiben lassen und diese Datein dann vergleichen.
Oder gehe ich die ganze Sache verkehrt an und es gibt eine viel einfacheren Weg?
Danke im voraus!
Ich suche ein Programm oder ein Batchfile, welches 2 Textdateien miteinander vergleicht und dann anzeigt, welche Zeichenkette in beiden vorhanden ist. Hintergrund: ich habe meine Filmsammlung auf mehrere Festplatten verteilt und bin mir sicher, daß ich manche Filme doppelt habe. Das möchte ich nur rausfinden und die doppelten löschen. Wollte dazu per
dir /b/s >inhalt1.txt
Oder gehe ich die ganze Sache verkehrt an und es gibt eine viel einfacheren Weg?
Danke im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319915
Url: https://administrator.de/contentid/319915
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo 'n Abend,
Winmerge ist Dein Freund. Es gibt auch noch andere Tools.
Ich nutze jedenfalls Winmerge. Das kann übrigens auch Verzeichnisse vergleichen.
Gruss Penny
Winmerge ist Dein Freund. Es gibt auch noch andere Tools.
Ich nutze jedenfalls Winmerge. Das kann übrigens auch Verzeichnisse vergleichen.
Gruss Penny
Hallo,
Gruß,
Peter
Zitat von @Rotnasenkater:
Ich suche ein Programm oder ein Batchfile, welches 2 Textdateien miteinander vergleicht und dann anzeigt, welche Zeichenkette in beiden vorhanden ist
Schau dir fc mal an. Ein FC /? sagt dir mehr und anfangen tust du mit FC Datei1 Datei2 >>Vergleich.txtIch suche ein Programm oder ein Batchfile, welches 2 Textdateien miteinander vergleicht und dann anzeigt, welche Zeichenkette in beiden vorhanden ist
Gruß,
Peter
Hallo Rotnasenkater,
hatte schon angefangen zu antworten daß das nicht so einfach ist.
Und meine eigene Batch nochmal angesehen und überarbeitet.
Sie ist allerdings auch auf mein THC-Archiv eingestellt das den Dateinamen den Sender und Datum-Zeitstempel anhängt.
Die Variablen am Anfang sind hoffentlich selbsterklärend, sonst bitte nachfragen.
Ausgabe ist eine große Textdatei sortiert nach dem Dateinamen ohne erw. und ohne den Zeitstempel.
Hier die Batchdatei:
Hier ein Ausschnitt des cmd Fensters
Hier ein Ausschnitt der Log-Datei mit Dublette "2 Fast 2 Furious"
hatte schon angefangen zu antworten daß das nicht so einfach ist.
Und meine eigene Batch nochmal angesehen und überarbeitet.
Sie ist allerdings auch auf mein THC-Archiv eingestellt das den Dateinamen den Sender und Datum-Zeitstempel anhängt.
Die Variablen am Anfang sind hoffentlich selbsterklärend, sonst bitte nachfragen.
Ausgabe ist eine große Textdatei sortiert nach dem Dateinamen ohne erw. und ohne den Zeitstempel.
Hier die Batchdatei:
:: Videos_Enum.cmd ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@Echo off&Setlocal
Set "Log=V:\Videos_All"
Set Trees="V:\Video\" "V:\Video.ts\"
Set "Extensions=*.ts *.mp4 *.mpeg *.mpg *.m2v *.xml"
Set "Exclude=_Video2Brain Oban Avatar _bak index --Genres"
:: Don't change below this line unless you know what you do
chcp 1252 >NUL
Set "Space= "
Set "Space=%Space% "
Set "RegEx=^20[01][0-9]-[0-1][0-9]-[0-3][0-9]."
Set "RegEx=%RegEx%[0-2][0-9]-[0-5][0-9]-[0-5][0-9]$"
Set Cnt=100000
Set "Head=#Filename_______________________________________________________"
Set "Head=%Head%________________ .Ext THC_Record_DateTime File__Date__Time"
Set "Head=%Head% FileSize_Byte Drive_Path_Name_Ext"
Echo:%Head% >"%Log%.txt"
For %%A in (%Trees%) do Call :ProcTree %%A
:: Sort
Sort "%Log%.txt" > "%Log%.Sort.txt"
:: Edit/View LogFile
Start "" Notepad++.exe "%Log%.Sort.txt"
::Call txp.cmd "%Log%.Sort.txt"
Goto :eof
:ProcTree
Pushd %1
Echo %Date% %Time:~0,8% Processing tree: %CD%
For /F "Delims=" %%V in (
'Dir /B/S/A-D/ON %Extensions%^|Findstr /V /i "%Exclude%"'
) Do Call :AddFile "%%~fV"
Popd
Goto :Eof
:AddFile
Set "Name=%~n1"
Set /a Cnt+=1
:: just for not getting bored
If "%~dp1" NEQ "%PrevDir%" Echo %Date% %Time:~0,8% %Cnt:~-5% Proc. Dir: %~dp1
Set "PrevDir=%~dp1"
:: If THC Recording cut last 19 (yyyy-MM-dd hh-nn-ss)
Set "THCdt=%Name:~-19%"
Echo:%THCdt%|Findstr "%RegEx%" >NUL 2>&1
If ErrorLevel 1 (
Set "THCdt=!Space:~-19!"
Set "Name=%Name%%Space%"
) Else (
Set "Name=!Name:~0,-19!%Space%"
)
Set "Ext=%~x1 "
Set "FileDT=%~t1 "
Set "FSize= %~z1"
Set "Line=%Name:~0,81%%Ext:~0,5%%THCdt% %FileDT%%FSize:~-13%"
:: Remove some poison chars from line
Set "Line=%Line:&=^&%"
>>"%Log%.txt" Echo.%Line% %1
Goto :Eof
Hier ein Ausschnitt des cmd Fensters
2016-11-04 1:25:17 Processing tree: V:\Video
2016-11-04 1:26:01 00001 Proc. Dir: V:\Video\
2016-11-04 1:26:29 00250 Proc. Dir: V:\Video\Action\
2016-11-04 1:26:53 00434 Proc. Dir: V:\Video\Krimi\
2016-11-04 1:26:54 00440 Proc. Dir: V:\Video\Fernsehfilm\
2016-11-04 1:26:56 00460 Proc. Dir: V:\Video\Serien\
2016-11-04 1:26:57 00472 Proc. Dir: V:\Video\_Familie\
Hier ein Ausschnitt der Log-Datei mit Dublette "2 Fast 2 Furious"
#Filename_______________________________________________________________________ .Ext THC_Record_DateTime File__Date__Time FileSize_Byte Drive_Path_Name_Ext
2 Fast 2 Furious - VOX .mpg 2010-03-18 20-15-00 2010-03-18 20:15 3043917824 "V:\Video\Action\2 Fast 2 Furious - VOX 2010-03-18 20-15-00.mpg"
2 Fast 2 Furious - VOX .mpg 2010-03-18 20-15-00 2010-03-18 20:15 3043917824 "V:\Video\Video\Action\2 Fast 2 Furious - VOX 2010-03-18 20-15-00.mpg"
2 Fast 2 Furious - VOX .xml 2010-03-18 20-15-00 2010-06-30 15:49 1159 "V:\Video\Action\2 Fast 2 Furious - VOX 2010-03-18 20-15-00.xml"
2 Fast 2 Furious - VOX .xml 2010-03-18 20-15-00 2010-06-30 15:49 1159 "V:\Video\Video\Action\2 Fast 2 Furious - VOX 2010-03-18 20-15-00.xml"
Hey,
noch eine Variante:
Gruß, Endoro
noch eine Variante:
@echo off &setlocal disabledelayedexpansion
for /f "delims=" %%a in ('dir /b/s/a-d D:\* E:\*') do (
set "\%%~nxa" 2>nul | find /i "\%%~nxa" >nul && (
for /f "tokens=1,2delims==>" %%b in ('set ">" 2^>nul ^| find /i \"%%~nxa>"') do echo %%~b
echo %%~a
) || (
set "\%%~nxa\=7"
set ">%%~a>=7"
)
)
Gruß, Endoro
Und hier noch ein Powershell Einzeiler
Gruß
gci 'd:\videos' -recurse | ?{!$_.PSISContainer} | group Name | ?{$_.Count -gt 1} | %{$_.Group.Fullname}
Was isses?????