Hét vraag- en antwoordplatform van Nederland

Hoe selecteer ik vanaf een DOS prompt de laatste 15 regels van een tekstbestand?

Ik heb een lang tekstbestand. Ik wil geheel automatisch vanuit een batch-bestand ( .bat ) de laatste 15 regels van dat tekstbestand in een ander bestand zetten.

Ofwel: alles moet weg, alleen de laatste 15 regels moeten worden bewaard.

Op Internet vind ik diverse programma's die hetzelfde doen als het tail-commando in Unix. Maar die zijn vaak interactief, en ik zoek juist iets dat zijn werk in stilte doet. Ook zijn die tail-klonen vaak gespecialiseerd in "tail -f", ofwel het continu monitoren van een tekstbestand, en dat wil ik niet.

Eigenlijk zoek ik dus alleen maar een simpel knip-en-plak-programma.

Waar vind ik een zo eenvoudig mogelijk programmaatje dat doet wat ik wil?
 

Cryofiel
10 jaar geleden

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Geef jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image

Het beste antwoord

Hè weer eens lekker ouderwets geprogrammeerd :-)

Met onderstaande batch-file moet het lukken:

@echo off
setlocal EnableDelayedExpansion
set "cmd=findstr /R /N "^^" %1| find /C ":""
for /f %%a in (’!cmd!’) do set number=%%a
set /a start= %number% -%2
if %start% LSS 1 set /a start=0
more %1 +%start%

Save als ‘tail.bat’ en dan te gebruiken als:

tail.bat [filenaam] [aantal regels]

tail.bat file.txt 15

of

tail.bat file.txt 15 > dump-file.txt

Toegevoegd na 1 uur:
Voor diegene die deze constructie ook willen gebruiken, merk op wat Cryofiel terecht in de reaktie schrijft:
GV zet de gewone ’ om in de "krullerige" variant, dus dat moet je herstellen ! (alles gewone ' dus)
(Lees meer...)
Cryofiel
10 jaar geleden
Wauw! Ik heb meteen een hoop nieuwe bat-constructies geleerd! Het was even fiedelen omdat GV de gewone ' omzet in de "krullerige" variant, dus dat moest ik herstellen. In de derde regel heb ik de eerste " direkt na het =-teken gezet, dat ziet er voor mij logischer uit. Verder heb ik cmd veranderd in iets anders, omdat cmd al een betekenis heeft in Windows. Niet dat het in dit geval uitmaakt, maar ik heb geleerd dat je alles moet doen om mogelijke verwarring te vermijden. Voor het nette heb ik een endlocal toegevoegd. En zie: hij doet het!
En ik begrijp wat er gebeurt! Helemaal super, dankjewel!
Ozewiezewozewiezewallakristallix
10 jaar geleden
Haha...
Asjeblief !!! :-D
SimonV
10 jaar geleden
Plus. Ik heb er niets aan, maar ik hou wel van een mooi stukje programmeerwerk.
Verwijderde gebruiker
10 jaar geleden
Knap gedaan, +
Cryofiel
10 jaar geleden
Superantwoord, en een prachtige constructie. Jouw code werkt nu al een paar dagen naar volle tevredenheid op mijn computer. Bedankt voor deze mooie en leerzame oplossing!

Andere antwoorden (1)

Installeer Cygwin en je hebt (bijna) alle Unix-commando's tot je beschikking.
(Lees meer...)
Verwijderde gebruiker
10 jaar geleden
Cryofiel
10 jaar geleden
Cygwin ken ik. Maar zoals ik schreef wil ik niets groots installeren. Ik zoek iets kleins en eenvoudigs, liefst iets dat ik zelfs niet hoef te installeren. In de reacties onder de vraag kun je lezen dat ik het tooltje wil aanroepen tijdens het afsluiten van Windows. Op dat moment is nog maar beperkte functionaliteit beschikbaar. Immers, Windows is aan het afsluiten. Het is nog maar zeer de vraag of op dat moment een groot pakket als Cygwin überhaupt nog wil runnen.
Deel jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image