中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文本输出小考验(看似容易)
作者:
标题: 文本输出小考验(看似容易) 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『楼 主』:  文本输出小考验(看似容易)

有a.txt内容如下:
0001000a0s
12300bhs001
0779q002
要求通过批处理输出如下:
1aa0s
123bbhs001
779qq002
即删除字母以前所有的0。



批处理之家新域名:www.bathome.net
2008-4-29 00:36
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




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

貌似还是得用变量截取和移位,一次皆两个,判断后面的是否小于a 如果小于a在判断前面的那个是不是0 是0就删除 我的思路~

[ Last edited by pusofalse on 2008-4-29 at 12:48 AM ]

2008-4-29 00:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

写出来看看,我觉得你想得复杂了点。



批处理之家新域名:www.bathome.net
2008-4-29 00:47
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




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

看了你那篇帖子我知道了~ 除以100取余!~
但能不能写出来是个问题。。。

2008-4-29 01:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  

提示:解这个问题还是用截取字符方便点。



批处理之家新域名:www.bathome.net
2008-4-29 01:12
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





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

是删除第一个字母前面所有的0吗?
1aa0s
a和s中间的这个0不要删除是吗?



致精致简!
2008-4-29 01:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  

是的



批处理之家新域名:www.bathome.net
2008-4-29 01:18
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




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

能提示一下怎样才能判断出 0在字母前面吗?

2008-4-29 01:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  

判断字母就是的



批处理之家新域名:www.bathome.net
2008-4-29 01:30
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





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

看来得先判断出第几位不是数字,这样就得一个一个截取,不知道有没有更高效的办法?



致精致简!
2008-4-29 01:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  我还是来抛块砖了:


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set code=&set str=%%i&call :lp
pause>nul&goto :eof
:lp
if defined str (
   set var=!str:~,1!
   if "!var!"=="0" set "var="
   set code=!code!!var!
   if !var! leq 9 (
      set str=!str:~1!&goto lp
      ) else (
      set code=!code!!str!&echo !code!
   )
)




批处理之家新域名:www.bathome.net
2008-4-29 01:33
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
qwd
初级用户





积分 161
发帖 56
注册 2007-10-1
状态 离线
『第 12 楼』:  

这是删除最后字母前的所有0字符!

@echo off
set/p h=输入字串
:js
set/a l+=1
call set "w=%%h:~-%l%%%"
echo %w%|findstr/i [a-z] &&goto zq ||goto js
:zq
call set "q=%%h:~0,-%l%%%"
set "q=%q:0=%"
echo %q%%w%
pause

删除第一个字母前面的0字符略有改动就行了!还用写吗?
@echo off
set/p h=输入字串
:js
set/a l+=1
call set "q=%%h:~,%l%%%"
echo %q%|findstr/i [a-z]>nul &&goto zq ||goto js
:zq
set "q=%q:0=%"
call set "w=%%h:~%l%%%"
echo %q%%w%
pause

[ Last edited by qwd on 2008-4-29 at 04:04 AM ]

2008-4-29 01:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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

:
@echo off
for /l %%a in (0 1 9) do set _%%a=a
for /f "delims=" %%a in (a.txt) do (
    set var=&set str=%%a
    call :loop
)
pause
:loop
   set num=%str:~0,1%
   if defined _%num% (set var=%var%%num%) else (
      echo %var:0=%%str%&goto :eof
   )
   set str=%str:~1%
goto loop




致精致简!
2008-4-29 01:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xvzheng
新手上路





积分 14
发帖 7
注册 2008-4-29
状态 离线
『第 14 楼』:  

很复杂吗??????

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

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


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



论坛跳转: