Regels verwijderen

Status
Niet open voor verdere reacties.
Omdat de manier van jou met -50 253 regels bewaard.
En mijn manier hou ik er 50 over.
Dus dacht ik ik vraag even hoe het zit.
Dat was de reden waarom ik het heb aangepast.
Met txt bestand is officieel 2880 regels, en groeit elke dag.
Hij maakt dagelijks een copy van dit bestand en hier wil ik dus de laatste 50 regels van over houden.

Matthijs
 
Jij schreef (in posting #15) dat de alternatieve code prima werkte, dus leg ik de misverstanden/onduidelijkheden in eerste instantie bij jou neer.

Tijs.
 
Oke dat is prima dat je dat bij mij neer legt.
Ik had op dat punt het script ook al aangepast op mijn manier.
Hoe ik de code stuurde hiervoor werkt hij perfect.
Alleen was mijn vraag waarom hij zo werkt en niet op uw manier met -50.
Ik loop stage bij een bedrijf, hiervoor heb ik dit batch bestand nodig.
Maar ze willen vraag weten hoe het bestand werkt, want als ik straks weg ben.
Dan willen zij ook graag weten hoe het werkt.

Matthijs
 
Ik heb geen idee, want ik zie de logica van -50 versus -10 niet. Hopelijk reageert iemand anders hier nog op.

Tijs.
 
Hoe ik het begreep is -50 staat gelijk aan: De laatste 50 regels bewaren.
Is dit ook zo?
 
Ja, want er wordt eerst geteld hoeveel regels er in het bestand zitten (is tevens het regelnummer dat de laatste regel aangeeft)
set LINES=0
for /f "delims==" %%I in ('type bestandsnaam.txt') do (
set /a LINES=LINES+1
)

Daarna wordt er (in mijn code) 50 afgehaald
set /a LINES=LINES-50

zodat LINES nu het regelnummer zouden moeten bevatten dat 50 van het einde van het bestand afligt.
Daarna wordt via MORE alles getypt (en afgevangen) vanaf dat regelnummer tot het einde van het bestand.

Dat is de logica in mijn programma. Waarom het met -10 beter werkt weet ik (dus) niet. Wellicht weer dat verhaal over lange bestandsregels?

Tijs.
 
Oke, nu is het helemaal helder.
Mijn excuses dat ik wat vaag ben en niet alles duidelijk aangeef.
Waarschijnlijk loopt het verkeerd door het tellen van de lange regels.
Mijn logica was dus alsnog correct, met de -10 was mijn bedoeling om 10 regels over te houden.
Maar goed, hij heeft gewoon moeite met het tellen van de regels.

Toch super bedankt voor je hulp.
Ik ga op zoek naar extra informatie over het huidige programma.

Matthijs.
 
Andere mogelijkheid is (vereist een hulpprogramma) om via het tail commando de laatste 50 (of 10 of wat je maar wilt) regels weer te geven van een tekst-bestand en die af te vangen naar een bestand.
Tail is (o.a.) te vinden als onderdeel van het volgende .zip bestand: deze
Zou in jouw geval dus betekenen (als tail te vinden is in het pad of de map waar het .bat bestand staat):
tail -50 \\fs2\DATA_2\tijdelijk\edifakt\maillog.txt > %tmp%\tmp.zzz
move /y %tmp%\tmp.zzz \\fs2\DATA_2\tijdelijk\edifakt\maillog.txt > nul


Test het uit, zo ik zo zeggen. Je moet hier (dat heb ik getest) een tussenbestand bij gebruiken, zoals in bovenstaand voorbeeld.
Lijkt ook te werken met (heel) lange regels, maar zo lang als die van jou heb ik niet mee getest.

Tijs.
 
Oke dan, ik heb een aantal testjes gedaan. Dat het bestand 100 regels laat zien, 50 regels, 10 en 1 regel. Alles werkt naar behoren.
Ik vroeg mij alleen af, aangezien er ongeveer 20 batch bestanden dagelijks draaien. Gaat Tail.exe niet conflicten met deze batch bestanden?

Matthijs
 
Laatst bewerkt:
Hangt ervan af wat er in die batch-bestanden gebeurt. Als daarbij niet hetzelfde tussenbestand (=%tmp%\tmp.zzz) wordt gebruikt lijkt mij dat er geen enkel probleem is.

Tijs.
 
Ja precies, nou goed ik waag het er op.

Vannacht draaien bijna alle batch bestanden, dus we zullen morgen zien als alles goed is gegaan.

Ieder geval bedankt!

Matthijs
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan