中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 进来看一下吧。我的代码错在哪里了??
作者:
标题: 进来看一下吧。我的代码错在哪里了?? 上一主题 | 下一主题
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『楼 主』:  进来看一下吧。我的代码错在哪里了??

@echo off&setlocal enabledelayedexpansion
set tk=2
goto 1

:2
set /a tk+=1
if %tk%==6 goto 3

:1
echo %%tk%% %tk%
for /f "tokens=%tk% delims= " %%i in ('fsutil fsinfo drives') do (fsutil fsinfo drivetype %%i>>f:\t.txt&echo !tk!
)
goto 2

:3
pause

为什么显示结果会这样:
%tk% 2
2
%tk% 3
%tk% 4
%tk% 5

而且t.txt文件里也只有:C:\ - 固定驱动器

到底错在哪里??

2007-4-4 04:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  

问题发现了,是从执行 fsutil fsinfo drives 后得到的串只到 C:\ 就结束了。
原因还不清楚。
C:\Documents and Settings\J>for /f "delims=" %i in ('fsutil fsinfo drives') do echo %i

C:\Documents and Settings\J>echo 驱动器: C:\
驱动器: C:\

C:\Documents and Settings\J>_


2007-4-4 05:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 3 楼』:  


@echo off&setlocal
for /f "tokens=1*" %%a in ('fsutil fsinfo drives^|more') do (
for /f %%x in ('echo/%%b,%%a') do (
fsutil fsinfo drivetype %%x
)
)


   此帖被 +2 点积分    点击查看详情   
评分人:【 wudixin96 分数: +2  时间:2007-4-7 03:02




我今后在论坛的目标就是做个超级坏人!!!
2007-4-4 05:42
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 4 楼』:  

请NaturalJ0及各位大侠。帮帮小弟吧。

再请9527解释一下。偶的为什么错吗??

[ Last edited by wudixin96 on 2007-4-4 at 05:49 AM ]

2007-4-4 05:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 5 楼』:  

fsutil fsinfo drives
fsutil fsinfo drives|more

你执行下这两句看有什么区别应该就明白了

2007-4-4 05:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 6 楼』:  

是的,自己多多试验,不要总是提问,这样对你没有多大的好处!!!



我今后在论坛的目标就是做个超级坏人!!!
2007-4-4 06:00
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 7 楼』:  

一个横排  一个竖排
但为什么横排就不行呢?
理论上也应该能取到的啊?


谢谢两位大侠。偶明白了。

[ Last edited by wudixin96 on 2007-4-4 at 06:13 AM ]

2007-4-4 06:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 8 楼』:  

因为这个横排特殊,和一般的不同。

2007-4-4 06:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 9 楼』:  

fsutil fsinfo drives的输出结果很特殊,如cmd下执行后显示:
驱动器: C:\ D:\ E:\ F:\

但其实在C:\、D:\、E:\和F:\之间都使用用00这个终止符连接的,而不是平常的换行符或者空格,导致for遇到00时就停止了读取,即for只能读到:
驱动器: C:\

[ Last edited by dikex on 2007-4-3 at 05:50 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 wudixin96 分数: +2  时间:2007-4-7 03:02


2007-4-4 06:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 10 楼』:  

是这样啊。偶以为中间是普通的空格分隔符呢

感谢dikex的帮助

2007-4-4 06:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: