中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: for取变量如何去头去尾 上一主题 | 下一主题
alex0007
初级用户





积分 104
发帖 40
注册 2007-6-7
状态 离线
『楼 主』:  for取变量如何去头去尾 使用 LLM 解释/回答一下

近日,在朋友处使用u盘后。中了病毒(trojan .hider ve),此毒会把u盘中的目录设置成为隐藏以及系统性质(在gui界面下面还居然不能修改目录的系统性质,只能用attrib改),,也因此要用到for来取我要的变量

Z:\>for /f "tokens=4 " %a in ('dir /ah') do @echo %a
KINGSTON
个人资料
Security
200706
200707
Deepin5.6
Lisp
D-Program
E-Program
Setup
200708
Lisp教程
兴荣水利工程
200705
字节
可用字节

这个命令中间的变量是我想要的,,但是头(KINGSTON
)以及尾(字节 可用字节)却是我想要过滤掉的。。请问如何过滤头和尾??

下面列出dir /ah完整的输出结果,供参考。

Z:\>dir /ah
驱动器 Z 中的卷是 KINGSTON
卷的序列号是 7DC5-8721

Z:\ 的目录

2007-03-14 15:47 <DIR> 个人资料
2007-06-05 17:10 <DIR> Security
2007-06-11 21:02 <DIR> 200706
2007-06-17 22:49 <DIR> 200707
2007-06-26 04:49 <DIR> Deepin5.6
2007-07-06 16:43 <DIR> Lisp
2007-06-23 00:49 <DIR> D-Program Files
2007-07-07 10:05 <DIR> E-Program Files
2007-07-24 00:50 <DIR> Setup
2007-08-06 18:03 <DIR> 200708
2007-08-13 17:14 <DIR> Lisp教程
2007-08-29 01:10 <DIR> 兴荣水利工程
2007-08-30 22:28 <DIR> 200705
0 个文件 0 字节
13 个目录 326,778,880 可用字节


2007-9-3 11:35
查看资料  发送邮件  发短消息  网志  OICQ (54628799)  编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

用dir /ah /b提取


2007-9-3 11:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
alex0007
初级用户





积分 104
发帖 40
注册 2007-6-7
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

for /f "skip=5 tokens=2 delims=>" %a in (' dir /ah') do @echo %a
经过学习,,使用上述语句,基本搞电,,但是又有一个新问题。就是当我用:

for /f "skip=5 tokens=2 delims=>" %a in (' dir /ah') do @attrib %a -s -h时提示:

Z:\>for /f "skip=5 tokens=2 delims=>" %a in (' dir /ah') do @attrib %a -s -h
参数格式不正确 -
参数格式不正确 -

我再试:
Z:\>attrib D-Program Files -s -h
参数格式不正确 -

然后再来:
Z:\>attrib "D-Program Files" -s -h (成功了!!!)

原因就在于对于长文件名必须用""括起来!!于是我再试:
Z:\>for /f "skip=5 tokens=2 delims=>" %a in (' dir /ah') do @attrib "%a" -s -h
找不到文件 - D-Program Files
找不到文件 - E-Program Files

问题出来了,,如何给for出来的变量添加""呢??


2007-9-3 12:05
查看资料  发送邮件  发短消息  网志  OICQ (54628799)  编辑帖子  回复  引用回复
alex0007
初级用户





积分 104
发帖 40
注册 2007-6-7
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

Originally posted by wudixin96 at 2007-9-3 11:48 AM:
用dir /ah /b提取



谢谢兄弟指教。。但是你的语句对于有长文件名的情况不妙,,请看:

Z:\>dir /ah /b
E-Program Files

Z:\>for /f %a in (' dir /ah /b') do @echo %a
E-Program


2007-9-3 12:11
查看资料  发送邮件  发短消息  网志  OICQ (54628799)  编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

呵呵

for /f "delims=" %a in (' dir /ah /b') do @echo %a


2007-9-3 12:17
查看资料  发短消息  网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

看楼主也是深度系统爱好者嘛


2007-9-3 12:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
alex0007
初级用户





积分 104
发帖 40
注册 2007-6-7
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

Originally posted by wudixin96 at 2007-9-3 12:19 PM:
看楼主也是深度系统爱好者嘛


这你也能看得出来??强!!:o

忘记自己的u盘上有一个deepin5.6文件夹出卖了自己。。:D

Last edited by alex0007 on 2007-9-3 at 04:01 PM ]


2007-9-3 15:49
查看资料  发送邮件  发短消息  网志  OICQ (54628799)  编辑帖子  回复  引用回复
alex0007
初级用户





积分 104
发帖 40
注册 2007-6-7
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

Originally posted by wudixin96 at 2007-9-3 12:17 PM:
呵呵

for /f "delims=" %a in (' dir /ah /b') do @echo %a



这句的确可以哦。。兄弟能解析一下此句与
for /f %a in (' dir /ah /b') do @echo %a
为何产生此区别吗??


2007-9-3 15:53
查看资料  发送邮件  发短消息  网志  OICQ (54628799)  编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

取消的默认的空格和跳格分隔符


2007-9-3 16:08
查看资料  发短消息  网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

for /f "tokens=*" %a in ('dir /ad/b') do attrib -s -r -h "%a"




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2007-9-4 08:48
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (653668)  编辑帖子  回复  引用回复

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


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



论坛跳转: