Per Batch Anzahl der Zeilen bestimmen und überflüssige in Datei löschen
Hallo miteinander,
es liegen 2 Dateien dat1.txt und dat2.txt vor, die miteinander verglichen werden sollen. Der Verglich geht folgendermaßen von statten:
Probleme gibt es nun wenn die Anzahl der Zeilen in dat1.txt und dat2.txt unterschiedlich ist. Wollte nun fragen wie man die Anzahl der Zeilen in dat1.txt bestimmen kann und die letzten Zeilen in dat2.txt löscht die über diese Anzahl hinaus gehen. Wenn also in dat1.txt 15 Zeilen stehen und in dat2.txt 20, sollen die letzten 5 Zeilen von dat2.txt gelöscht werden.
Freu mich auf eure Antworten.
MfG
knechtibus
es liegen 2 Dateien dat1.txt und dat2.txt vor, die miteinander verglichen werden sollen. Der Verglich geht folgendermaßen von statten:
@echo off & setlocal
if exist dat3.txt del dat3.txt
findstr /v /G:dat2.txt dat1.txt >>dat3.txt
Probleme gibt es nun wenn die Anzahl der Zeilen in dat1.txt und dat2.txt unterschiedlich ist. Wollte nun fragen wie man die Anzahl der Zeilen in dat1.txt bestimmen kann und die letzten Zeilen in dat2.txt löscht die über diese Anzahl hinaus gehen. Wenn also in dat1.txt 15 Zeilen stehen und in dat2.txt 20, sollen die letzten 5 Zeilen von dat2.txt gelöscht werden.
Freu mich auf eure Antworten.
MfG
knechtibus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121728
Url: https://administrator.de/contentid/121728
Ausgedruckt am: 20.11.2024 um 09:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo knechtibus!
Etwa so:
Grüße
bastla
Etwa so:
@echo off & setlocal
set "D1=D:\dat1.txt"
set "D2=D:\dat2.txt"
set "D3=D:\dat3.txt"
set "DTemp=%temp%\dat2temp.txt"
if exist "%DTemp%" del "%DTemp%"
for /f "delims=:" %%i in ('findstr /n "^" "%D1%"') do set Anzahl=%%i
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%D2%"') do if %%i leq %Anzahl% >>"%DTemp%" echo\%%j
findstr /v /G:"%DTemp%" "%D1%">"%D3%"
del "%DTemp%"
bastla
Hallo knechtibus!
Damit Du eine dieser Dateien "überall" verwenden kannst, musst Du sie in eines der in %PATH% enthaltenen Verzeichnisse legen, also üblicher Weise in "%WINDIR%" (ist in %PATH% aufgelöst zB in "C:\Windows") oder "%WINDIR%\System32".
Alternativ kannst Du natürlich den vollständigen Pfad zur jeweilgen ".exe"-Datei angeben, also zB "C:\Utils\sleep.exe".
Grüße
bastla
Damit Du eine dieser Dateien "überall" verwenden kannst, musst Du sie in eines der in %PATH% enthaltenen Verzeichnisse legen, also üblicher Weise in "%WINDIR%" (ist in %PATH% aufgelöst zB in "C:\Windows") oder "%WINDIR%\System32".
Alternativ kannst Du natürlich den vollständigen Pfad zur jeweilgen ".exe"-Datei angeben, also zB "C:\Utils\sleep.exe".
Grüße
bastla