中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 15:49
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何取得每行倒数字符
可打印版本  915 / 8
第1楼 wjcing 发表于 2008-11-24 21:17
初级用户 发帖 59 积分 71
如何取得每行倒数字符
我在一个22.txt文件中有如下内容:
88 59 60 89 88 99 100 88 59 ... 87 56 84 67 78 90 88 80 99 81 80 83 85
99 59 60 89 88 99 100 88 59 ... 87 56 84 67 78 90 88 80 99 81 80 83 65
33 59 60 89 88 99 100 ... 88 59 87 56 84 67 78 90 88 80 99 81 80 83 75

我用以下命令想把每行的倒数第二个字符给取出来:如第一行的8,第二行的6,第三行的7,
@echo off& Setlocal Enabledelayedexpansion
for /f "usebackq tokens=1 delims=" %%a in ("C:\Documents and Settings\22.txt") do (
echo %%a 
set str=%%a
echo %str:~-2,1%
)
echo.&pause

运行以上命令后变量%%a是有值的,也就是一行的值,但是在str中没有值,我想问题应该就在这里,但是我不知道应该怎么写才能取出我想要的结果。

麻烦各位高手帮帮忙,谢谢了。

[ Last edited by wjcing on 2008-11-24 at 21:19 ]
第2楼 terse 发表于 2008-11-24 21:33
银牌会员 发帖 946 积分 2,404
echo !str:~-2,1!
第3楼 tireless 发表于 2008-11-24 21:35
银牌会员 发帖 1,122 积分 2,025
看一下这个帖子:

什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733
第4楼 wjcing 发表于 2008-11-24 22:29
初级用户 发帖 59 积分 71
变量延迟我用了啊。。还是不行。。哎。。看不出错在那。。
setlocal EnableDelayedExpansion
第5楼 HAT 发表于 2008-11-24 22:48
版主 发帖 5,017 积分 9,023
Re 4楼
2楼不是告诉你了么?
第6楼 wjcing 发表于 2008-11-24 22:53
初级用户 发帖 59 积分 71
呵呵。。。二楼的可以了。。我刚才还以为!是%呢。。。为什么!号就行%就不行了呢。。。。郁闷找不到!的帮忙。。
第7楼 HAT 发表于 2008-11-24 22:58
版主 发帖 5,017 积分 9,023
第8楼 wjcing 发表于 2008-11-24 23:07
初级用户 发帖 59 积分 71
好的。谢谢。。。看看先。。
第9楼 wjcing 发表于 2008-11-25 00:06
初级用户 发帖 59 积分 71
我现在对感吧号(!)的理解是这样的。。它和%一样是转义字符(或者说是引用,扩展),只不过他是在启用了Setlocal Enabledelayedexpansion之后在在要延迟的变量中使用的转义字符,不知道的我理解有没有错。。

睡了。。明天再看了。。谢谢各位的帮忙。。。谢谢。

[ Last edited by wjcing on 2008-11-25 at 00:07 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023