getuemii
Goto Top

Nicht (mehr) vorhandene Zeilen beim Dateivergleich finden

Hallo,

gegeben sind zwei Dateien inital.txt (mit dem Anfangsstand eines Dir-Listings) und current.txt (mit dem aktuellen Stand). Ziel ist es, Dateien, die in inital.txt vorhanden, in current.txt jedoch nicht mehr da sind, zu finden.
dir /a:-D /n /o:n t:\temp\ > current.txt
erzeugt den Inhalt. Mit
For /F "delims=" %%i in (initial.txt) do (  
	(find "%%i" current.txt >nul) && echo %%i)  
bekomme ich die Einträge, die gleich sind, aber wie erwische ich die, die nicht gleich sind?

geTuemII

Content-ID: 90149

Url: https://administrator.de/forum/nicht-mehr-vorhandene-zeilen-beim-dateivergleich-finden-90149.html

Ausgedruckt am: 21.12.2024 um 15:12 Uhr

Biber
Biber 18.06.2008 um 19:17:11 Uhr
Goto Top
Moin Tuemeli,

versuch es so [Beispiel am CMD-Prompt]:
(=19:11:18  C:\TEMP=)
>For /F "delims=" %i in (initial.lst) do @(find "%i" current.lst >nul) || @echo [not_in_new]: %i  
[not_in_new]: 06.03.2008  08:29                67 Test0.bat
[not_in_new]: 25.07.2007  23:09                46 test3.bat
[not_in_new]:               36 Datei(en)         30.098 Bytes

(=19:11:39  C:\TEMP=)
>For /F "delims=" %i in (current.lst) do @(find "%i" initial.lst >nul) || @echo [not_in_old]: %i  
[not_in_old]: 18.06.2008  18:56                72 Test0.bat
[not_in_old]: 25.07.2007  23:09                46 test3renamed.bat
[not_in_old]:               36 Datei(en)         30.103 Bytes

[Unterschied zwischen "initial" und "current"- DIR-Ausgabe:
-> Datei Test0.bat wurde geändert.
-> test3.bat würde umbenamst.
]

Liebe Grüße
Biber


[Edit] Schwer zu lesen bei einem Zeilenumbruch nach 18einhalb Zeichen...
Als Bätschelchen:
....
For /F "delims=" %%i in (initial.lst) do (  
    (find "%%i" current.lst >nul) || @echo [not_in_new]: %%i  
)
For /F "delims=" %%i in (current.lst) do (  
    (find "%%i" initial.lst >nul) || @echo [not_in_old]: %%i  
)
...
[/Edit]
[Edit2] eigentlich viel zu umständlich... die Frage war ja nur nach den "nich'-mehr-da-Teien"...
...
For /F "skip=5 tokens=3,*" %%a in ('find ":" current.lst') do (  
    @(find "%%b" initial.lst >nul) || @echo [not_in_old]: %%b  
  ) 
...  
[/Edit2]
geTuemII
geTuemII 18.06.2008 um 20:55:49 Uhr
Goto Top
Hallo Beaver,

danke, genau das wars --> schon die Edit1, die andere werde ich morgen nochmal genau ansehen. Da die mir noch die geänderten rausfiltert, wäre die noch besser. face-smile

Schönen Abend noch,
geTuemII