knechtibus
Goto Top

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:

@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

Content-Key: 121728

Url: https://administrator.de/contentid/121728

Printed on: April 19, 2024 at 10:04 o'clock

Member: bastla
bastla Jul 31, 2009 at 08:05:45 (UTC)
Goto Top
Hallo knechtibus!

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%"  
Grüße
bastla
Member: knechtibus
knechtibus Jul 31, 2009 at 08:21:34 (UTC)
Goto Top
Hallo bastla,

was hatte ich denn auch anderes erwartet wenn du eine Batch schreibst face-smile funktioniert zu 100% genau so wie ich mir es vorgestellt/gewünscht habe.
Vielen Dank für die perfekte Hilfe.

MfG
ehrfürchtiger knechtibus
Member: bastla
bastla Jul 31, 2009 at 08:32:00 (UTC)
Goto Top
Hallo knechtibus!
funktioniert zu 100% genau so wie ich mir es vorgestellt/gewünscht habe.
Freut mich face-smile ...

... wobei: Die Chance, dass es wirklich klappt, ist wesentlich größer, wenn ich zur Abwechslung einmal die richtige Anzahl von Prozentzeichen im Batch unterbringe ... face-wink

Grüße
bastla
Member: knechtibus
knechtibus Jul 31, 2009 at 08:46:29 (UTC)
Goto Top
Hallo bastla,

ach naja, wie man sieht das passiert den Besten. Hab noch kurz eine andere Frage. In dem von dir erwähnten Batch wollte ich die sleep.exe zum zyklischen Ausführen benutzen. Die muss ich doch dann einfach nur in das Verzeichnis kopieren von dem aus die Batch-Datei ausgeführt wird, oder?
Es kommt leider immer die Fehlermeldung: "Der Befehl ist entweder falsch geschrieben oder konnte nicht gefunden werden". Habs auch mal mit der wait.exe versucht, leider genau das gleiche.

MfG
knechtibus
Member: bastla
bastla Jul 31, 2009 at 08:53:39 (UTC)
Goto Top
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
Member: knechtibus
knechtibus Jul 31, 2009 at 08:59:35 (UTC)
Goto Top
Hallo bastla,

wunderbar, jetzt funktioniert das auch. Danke für die schnelle, adäquate Hilfe.

MfG
knechtibus