中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 11:20
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文本输出小考验(看似容易) 查看 1,063 回复 13
楼 主 文本输出小考验(看似容易) 发表于 2008-04-29 00:36 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
有a.txt内容如下:
0001000a0s
12300bhs001
0779q002

要求通过批处理输出如下:
1aa0s
123bbhs001
779qq002
即删除字母以前所有的0。
批处理之家新域名:www.bathome.net
2 发表于 2008-04-29 00:46 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
貌似还是得用变量截取和移位,一次皆两个,判断后面的是否小于a 如果小于a在判断前面的那个是不是0 是0就删除 我的思路~

[ Last edited by pusofalse on 2008-4-29 at 12:48 AM ]
3 发表于 2008-04-29 00:47 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
写出来看看,我觉得你想得复杂了点。
批处理之家新域名:www.bathome.net
4 发表于 2008-04-29 01:02 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
看了你那篇帖子我知道了~ 除以100取余!~
但能不能写出来是个问题。。。
5 发表于 2008-04-29 01:12 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
提示:解这个问题还是用截取字符方便点。
批处理之家新域名:www.bathome.net
6 发表于 2008-04-29 01:16 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
是删除第一个字母前面所有的0吗?
1aa0s
a和s中间的这个0不要删除是吗?
致精致简!
7 发表于 2008-04-29 01:18 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
是的
批处理之家新域名:www.bathome.net
8 发表于 2008-04-29 01:25 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
能提示一下怎样才能判断出 0在字母前面吗?
9 发表于 2008-04-29 01:30 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
判断字母就是的
批处理之家新域名:www.bathome.net
10 发表于 2008-04-29 01:31 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
看来得先判断出第几位不是数字,这样就得一个一个截取,不知道有没有更高效的办法?
致精致简!
11 我还是来抛块砖了: 发表于 2008-04-29 01:33 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
@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
12 发表于 2008-04-29 01:52 ·  中国 河南 郑州 联通
初级用户
★★
积分 161
发帖 56
注册 2007-10-01 00:42
18年会员
UID 98672
性别 男
状态 离线
这是删除最后字母前的所有0字符!

@echo off
set/p h=输入字串
:js
set/a l+=1
call set "w=%%h:~-%l%%%"
echo %w%|findstr/i &&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 >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 ]
13 发表于 2008-04-29 01:58 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
:

@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
致精致简!
14 发表于 2008-04-29 23:24 ·  中国 江苏 南京 电信
新手上路
积分 14
发帖 7
注册 2008-04-29 22:21
18年会员
UID 117324
性别 男
状态 离线
很复杂吗??????
论坛跳转: