![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 17:02 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for取变量如何去头去尾 |
| 可打印版本 909 / 9 |
| 第1楼 alex0007 | 发表于 2007-09-03 11:35 |
| 初级用户 发帖 40 积分 104 | |
|
for取变量如何去头去尾 近日,在朋友处使用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 可用字节 |
|
| 第2楼 wudixin96 | 发表于 2007-09-03 11:48 |
| 银牌会员 发帖 931 积分 1,928 | |
|
用dir /ah /b提取
|
|
| 第3楼 alex0007 | 发表于 2007-09-03 12:05 |
| 初级用户 发帖 40 积分 104 | |
|
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出来的变量添加""呢?? |
|
| 第4楼 alex0007 | 发表于 2007-09-03 12:11 |
| 初级用户 发帖 40 积分 104 | |
Originally posted by wudixin96 at 2007-9-3 11:48 AM: 谢谢兄弟指教。。但是你的语句对于有长文件名的情况不妙,,请看: Z:\>dir /ah /b E-Program Files Z:\>for /f %a in (' dir /ah /b') do @echo %a E-Program |
|
| 第5楼 wudixin96 | 发表于 2007-09-03 12:17 |
| 银牌会员 发帖 931 积分 1,928 | |
|
呵呵
for /f "delims=" %a in (' dir /ah /b') do @echo %a |
|
| 第6楼 wudixin96 | 发表于 2007-09-03 12:19 |
| 银牌会员 发帖 931 积分 1,928 | |
|
看楼主也是深度系统爱好者嘛
|
|
| 第7楼 alex0007 | 发表于 2007-09-03 15:49 |
| 初级用户 发帖 40 积分 104 | |
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 ] |
|
| 第8楼 alex0007 | 发表于 2007-09-03 15:53 |
| 初级用户 发帖 40 积分 104 | |
Originally posted by wudixin96 at 2007-9-3 12:17 PM: 这句的确可以哦。。兄弟能解析一下此句与 for /f %a in (' dir /ah /b') do @echo %a 为何产生此区别吗?? |
|
| 第9楼 wudixin96 | 发表于 2007-09-03 16:08 |
| 银牌会员 发帖 931 积分 1,928 | |
|
取消的默认的空格和跳格分隔符
|
|
| 第10楼 Climbing | 发表于 2007-09-04 08:48 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
for /f "tokens=*" %a in ('dir /ad/b') do attrib -s -r -h "%a"
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |