webForumDet fria alternativet

Bat fil- Ändring av dem sista 10 raderna

Webbutveckling

1 svar · 1 035 visningar · startad av pavel

Medlem sedan juli 20131 inlägg
Frågan#1
@echo off > newfile & setLocal enableDELAYedexpansion
copy /Y E:\LOG.DIR LOG.DIR
set old=INACTIVE
set new=ACTIVE

for /f "tokens=* delims=" %%a in (LOG.DIR) do (
set str=%%a
echo %:)
set str=!str:%old%=%new%!
>> newfile echo !str!
)

pause

Hur gör jag för att ändra bara dem sista 20 raderna och inte hela innehållet.
Tacksam för svar

Medlem sedan juni 20004 308 inlägg
#2

Jag skrev ett eget exempel. Du förstår säkert vad du behöver ändra för att det skall passa dig. I korthet: först räkna antalet rader i filen. Dra ifrån antalet rader du vill göra något med i slutet på filen (20). Loopa igenom filen igen med en räknare och kolla om räknaren är större än x.

@echo off
setlocal EnableDelayedExpansion

set flen=0
for /f %%i in (c:\text.txt) do (
    set /A flen=flen+1
)
set /a readfrom=flen-20
set count=0
for /f %%i in (c:\text.txt) do (
  set /A count=count+1
  if !count! GTR !readfrom! (
    echo Do something with one of the last 20 lines containing %%i
  ) else (
    echo Do something with the first lines of the file containing %%i
  )
)
253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)