|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『楼 主』:
难题:对文本中所有数值加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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-4-18 20:28 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
2 楼』:
我先来抛砖吧:
@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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-4-18 20:31 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
3 楼』:
@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=
|
简单!简单!再简单! |
|
2008-4-18 21:00 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
|
2008-4-18 21:15 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
5 楼』:
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324 gh64287ffsfj_85935646-fj5
|
|
2008-4-18 21:17 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
6 楼』:
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%%& ... |
|
再次折服于兄弟,学习!!!
|
批处理之家新域名:www.bathome.net |
|
2008-4-18 21:25 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by pusofalse at 2008-4-18 21:17:
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234 ... |
|
set str=就是清空变量str以便下一次的追加赋值。
|
批处理之家新域名:www.bathome.net |
|
2008-4-18 21:32 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
|
2008-4-18 21:43 |
|