我试图用一个递增的数字(+1)来替换给定文件每行末尾的数字。
我的输入文件是这样的
C:documents/a.txt,1988,15.01.00.0059
C:documentswe.txt,1988,15.01.00.0059
C:documents/gh.txt,1987,1988,15.01.00.0059。
我的输出文件应该是
C:documents/a.txt,1988,15.01.00.0060。
C:documentswe.txt,1988,15.01.00.0060。
C:documents/gh.txt,1988,15.01.00.0060。
我的尝试就像
@echo off
setlocal enableextensions disabledelayedexpansion
set "search="
for /F "tokens=1-3 delims=," %%i in (%1) do (
@echo %%i %%j %%k
set "search=%%k"
)
set "replace="
REM @echo %replace%
set "textFile=%1"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
我可以得到15.01.00.0059从输入文件,但不知道如何改变到15.01.00.0060。
替换到相同的输入文件也是工作。我只是需要知道如何递增的值,并分配给 "替换"。
谢谢你
Bhargav.k
这应该是足够灵活的。
@echo off
setlocal EnableDelayedExpansion EnableExtensions
1>out.txt (
FOR /F tokens^=*^ delims^=.^ eol^= %%L in (input.txt) do (
set "line=%%L"
set "x=!line:.= !"
FOR %%T in (!x!) do set "lastToken=%%T"
cmd /c exit /b !lastToken!
set/a"lstrip=!ERRORLEVEL!+1"
>getlen.tmp echo(!lasttoken!
FOR %%L in (getlen.tmp) do set/a"len=%%~zL-2" %= get length of last token, minus CRLF =%
FOR %%N in (1 1 !len!) do set "lstrip=0!lstrip!" PREFIX lstrip with zeroes
FOR %%N in (!len!) do (
set "lstrip=!lstrip:~-%%N!"
echo !line:~0,-%%N!!lstrip!
)
)
)
del getlen.tmp
ENDLOCAL
这不是一个简单的方法。脚本计算了最后一个标记前的零的数量,由 ERRORLEVEL
所回 EXIT /B
,与原来的令牌相比。