0

すべての内容ではなく、最後の 20 行のみを変更するにはどうすればよいですか。

@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 %SOON
set str=!str:%old%=%new%! >> newfile echo !str!
)
4

1 に答える 1

2

見てみな:

@ECHO OFF &SETLOCAL
copy /Y E:\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
)

find行数から 20 を引いた値を取得し、結果をループskip=に入れます。for /f

于 2013-07-07T21:46:26.763 に答える