中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 16:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何取得每行倒数字符 查看 917 回复 8
楼 主 如何取得每行倒数字符 发表于 2008-11-24 21:17 ·  中国 广东 广州 天河区 电信
初级用户
★★
积分 71
发帖 59
注册 2007-12-27 17:53
18年会员
UID 106966
性别 男
状态 离线
我在一个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 发表于 2008-11-24 21:33 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
echo !str:~-2,1!
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wjcing +2 2008-11-27 09:16
简单!简单!再简单!
3 发表于 2008-11-24 21:35 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
看一下这个帖子:

什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wjcing +2 2008-11-27 09:12
4 发表于 2008-11-24 22:29 ·  中国 广东 广州 天河区 电信
初级用户
★★
积分 71
发帖 59
注册 2007-12-27 17:53
18年会员
UID 106966
性别 男
状态 离线
变量延迟我用了啊。。还是不行。。哎。。看不出错在那。。
setlocal EnableDelayedExpansion
5 Re 4楼 发表于 2008-11-24 22:48 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
2楼不是告诉你了么?
6 发表于 2008-11-24 22:53 ·  中国 广东 广州 天河区 电信
初级用户
★★
积分 71
发帖 59
注册 2007-12-27 17:53
18年会员
UID 106966
性别 男
状态 离线
呵呵。。。二楼的可以了。。我刚才还以为!是%呢。。。为什么!号就行%就不行了呢。。。。郁闷找不到!的帮忙。。
7 发表于 2008-11-24 22:58 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wjcing +2 2008-11-27 09:16
8 发表于 2008-11-24 23:07 ·  中国 广东 广州 天河区 电信
初级用户
★★
积分 71
发帖 59
注册 2007-12-27 17:53
18年会员
UID 106966
性别 男
状态 离线
好的。谢谢。。。看看先。。
9 发表于 2008-11-25 00:06 ·  中国 广东 广州 天河区 电信
初级用户
★★
积分 71
发帖 59
注册 2007-12-27 17:53
18年会员
UID 106966
性别 男
状态 离线
我现在对感吧号(!)的理解是这样的。。它和%一样是转义字符(或者说是引用,扩展),只不过他是在启用了Setlocal Enabledelayedexpansion之后在在要延迟的变量中使用的转义字符,不知道的我理解有没有错。。

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

[ Last edited by wjcing on 2008-11-25 at 00:07 ]
论坛跳转: