中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 难题:对文本中所有数值加1 上一主题 | 下一主题
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
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=

   此帖被 +4 点积分        点击查看详情   
评分人:【 moniuming 分数: +4  时间:2008-4-18 21:55




简单!简单!再简单!
2008-4-18 21:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 4 楼』:  


@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


   此帖被 +8 点积分        点击查看详情   
评分人:【 bat-zw 分数: +8  时间:2008-4-18 21:23




致精致简!
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 8 楼』:  

谢谢!又学到了新东西~

2008-4-18 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: