标题: 难题:对文本中所有数值加1
[打印本页]
作者: bat-zw
时间: 2008-4-18 20:28
标题: 难题:对文本中所有数值加1
a.txt内容如下:
36d5c496a5863f4f4572d1z69
456-d_fhs234f123hi7459213
gh53176ffsfj_74824535-fj4
要求通过批处理生成b.txt内容如下,即对a.txt中所有数值加1(满10归0),但其它的不变:
47d6c507a6974f5f5683d2z70
567-d_fhs345f234hi8560324
gh64287ffsfj_85935646-fj5
注:并不知道任一字符串的长度
[
Last edited by zw19750516 on 2008-4-18 at 08:32 PM ]
作者: bat-zw
时间: 2008-4-18 20:31
标题: 我先来抛砖吧:
@echo off
for /f "delims=" %%i in (a.txt) do set v=0&set m=0&set n=-1&set a=%%i&call :lp %%a%%
start b.txt
goto :eof
:lp
set /a n+=1
call,set var=%%a:~%n%,1%%
if "%var%"=="" set m=1
for %%i in (0,1,2,3,4,5,6,7,8,9,) do if "%var%"=="%%i" set /a v+=1
if %v% gtr 0 set /a var+=1
if "%var%"=="10" set var=0
set str=%str%%var%
if %m% neq 1 set v=0&goto lp
echo %str%>>b.txt
set str=&goto :eof
[
Last edited by zw19750516 on 2008-4-18 at 09:11 PM ]
作者: terse
时间: 2008-4-18 21:00
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set "str=%%i"& call:lp
pause
goto :eof
:lp
if defined str (
set str1=!str:~0,1!
for %%i in (0 1 2 3 4 5 6 7 8 9) do if "!str1!"=="%%i" set/a str1+=1&goto :lp1
:lp1
set str2=!str2!!str1:~-1!
set str=!str:~1!
goto lp
)
echo !str2!
set str2=
作者: 26933062
时间: 2008-4-18 21:15
@echo off
for /l %%a in (0 1 9) do set _%%a=a
for /f "delims=" %%a in (a.txt) do (
set str=%%a&set "num="&echo %%a
call :loop
call echo %%num%%&echo.
)
pause
:loop
if not defined str goto :eof
set var=%str:~0,1%
if defined _%var% set /a var+=1
set str=%str:~1%
set num=%num%%var:~-1%
goto loop
作者: pusofalse
时间: 2008-4-18 21:17
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324 gh64287ffsfj_85935646-fj5
作者: bat-zw
时间: 2008-4-18 21:25
Quote: |
Originally posted by 26933062 at 2008-4-18 21:15:
[code]
@echo off
for /l %%a in (0 1 9) do set _%%a=a
for /f "delims=" %%a in (a.txt) do (
set str=%%a&set "num="&echo %%a
call :loop
call echo %%num%%& ... |
|
再次折服于兄弟,学习!!!
作者: bat-zw
时间: 2008-4-18 21:32
Quote: |
Originally posted by pusofalse at 2008-4-18 21:17:
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234 ... |
|
set str=就是清空变量str以便下一次的追加赋值。
作者: pusofalse
时间: 2008-4-18 21:43
谢谢!又学到了新东西~