中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 05:39
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 难题:对文本中所有数值加1
可打印版本  823 / 7
第1楼 bat-zw 发表于 2008-04-18 20:28
金牌会员 发帖 1,276 积分 3,105
难题:对文本中所有数值加1
a.txt内容如下:

要求通过批处理生成b.txt内容如下,即对a.txt中所有数值加1(满10归0),但其它的不变:

注:并不知道任一字符串的长度

[ Last edited by zw19750516 on 2008-4-18 at 08:32 PM ]
第2楼 bat-zw 发表于 2008-04-18 20:31
金牌会员 发帖 1,276 积分 3,105
我先来抛砖吧:


[ Last edited by zw19750516 on 2008-4-18 at 09:11 PM ]
第3楼 terse 发表于 2008-04-18 21:00
银牌会员 发帖 946 积分 2,404
@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楼 26933062 发表于 2008-04-18 21:15
银牌会员 发帖 879 积分 2,268
第5楼 pusofalse 发表于 2008-04-18 21:17
银牌会员 发帖 646 积分 1,604
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234hi85610324 gh64287ffsfj_85935646-fj5
第6楼 bat-zw 发表于 2008-04-18 21:25
金牌会员 发帖 1,276 积分 3,105
Originally posted by 26933062 at 2008-4-18 21:15:
第7楼 bat-zw 发表于 2008-04-18 21:32
金牌会员 发帖 1,276 积分 3,105
Originally posted by pusofalse at 2008-4-18 21:17:
高!竟然有这招,判断str的值是否为空
请教一下 最后set str2=是什么意思? 如果去掉 会显示
47d6c5107a6974f5f5683d2z710
47d6c5107a6974f5f5683d2z710 567-d_fhs345f234 ...

set str=就是清空变量str以便下一次的追加赋值。
第8楼 pusofalse 发表于 2008-04-18 21:43
银牌会员 发帖 646 积分 1,604
谢谢!又学到了新东西~
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023