Batch file 如何替换文本文件最后20行中的文本? @ECHO OFF&SETLOCAL 复制/Y C:\LOG.DIR LOG.DIR 设置“旧=不活动” 设置“新建=活动” 对于/f%%a IN(“^@echo off setlocal enableextensio
如何替换文本文件最后20行中的文本?Batch file 如何替换文本文件最后20行中的文本? @ECHO OFF&SETLOCAL 复制/Y C:\LOG.DIR LOG.DIR 设置“旧=不活动” 设置“新建=活动” 对于/f%%a IN(“^@echo off setlocal enableextensio,batch-file,Batch File,如何替换文本文件最后20行中的文本? @ECHO OFF&SETLOCAL 复制/Y C:\LOG.DIR LOG.DIR 设置“旧=不活动” 设置“新建=活动” 对于/f%%a IN(“^@echo off setlocal enableextensions enabledelayedexpansion 复制/y c:\log.dir log.dir 设置“旧=不活动” 设置“新建=活动” 对于(“^中的/f%%a,您正在删除文件的最后20行,但问题无法解释原因。显然,如果文件少于20行,您将
@ECHO OFF&SETLOCAL
复制/Y C:\LOG.DIR LOG.DIR
设置“旧=不活动”
设置“新建=活动”
对于/f%%a IN(“^@echo off
setlocal enableextensions enabledelayedexpansion
复制/y c:\log.dir log.dir
设置“旧=不活动”
设置“新建=活动”
对于(“^中的/f%%a,您正在删除文件的最后20行,但问题无法解释原因。显然,如果文件少于20行,您将以空文件结束。您能否解释代码为何以这种方式运行,或者代码的用途是什么?我只想将最后20行更改为活动,如果每行少于20行。
@ECHO OFF & SETLOCAL
copy /Y C:\LOG.DIR LOG.DIR
set "old=INACTIVE"
set "new=ACTIVE"
FOR /f %%a IN ('^<log.DIR find /v /c ""') DO SET /a length=%%a
SET /a length-=20
SETLOCAL ENABLEDELAYEDEXPANSION
<log.DIR (
FOR /l %%a IN (1,1,%length%) DO (
SET "line="
SET /p "line="
ECHO !line!
))>newfile
ENDLOCAL
for /f "skip=%length% delims=" %%a in (LOG.DIR) do (
set "str=%%a"
SETLOCAL ENABLEDELAYEDEXPANSION
set "str=!str:%old%=%new%!"
>>newfile ECHO !str!
endlocal
)
@echo off
setlocal enableextensions enabledelayedexpansion
copy /y c:\log.dir log.dir
set "old=INACTIVE"
set "new=ACTIVE"
for /f %%a in ('^<log.dir find /v /c ""') do set /a "length=%%a"
if %length% gtr 20 ( set /a "startPoint=length-20+1" ) else ( set "startPoint=1" )
<log.dir (
for /l %%a in (1,1,%length%) do (
set "line="
set /p "line="
if not defined line (
echo(
) else if %%a lss %startPoint% (
echo(!line!
) else (
echo(!line:%old%=%new%!
)
)
)>newfile
endlocal