中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-03 23:59
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 进来看一下吧。我的代码错在哪里了??
可打印版本  665 / 9
第1楼 wudixin96 发表于 2007-04-04 04:22
银牌会员 发帖 931 积分 1,928
进来看一下吧。我的代码错在哪里了??
@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:\ - 固定驱动器

到底错在哪里??
第2楼 NaturalJ0 发表于 2007-04-04 05:34
银牌会员 发帖 533 积分 1,181
问题发现了,是从执行 fsutil fsinfo drives 后得到的串只到 C:\ 就结束了。
原因还不清楚。

第3楼 9527 发表于 2007-04-04 05:42
银牌会员 发帖 438 积分 1,185 来自 北京
第4楼 wudixin96 发表于 2007-04-04 05:43
银牌会员 发帖 931 积分 1,928
请NaturalJ0及各位大侠。帮帮小弟吧。

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

[ Last edited by wudixin96 on 2007-4-4 at 05:49 AM ]
第5楼 NaturalJ0 发表于 2007-04-04 05:58
银牌会员 发帖 533 积分 1,181
fsutil fsinfo drives
fsutil fsinfo drives|more

你执行下这两句看有什么区别应该就明白了
第6楼 9527 发表于 2007-04-04 06:00
银牌会员 发帖 438 积分 1,185 来自 北京
是的,自己多多试验,不要总是提问,这样对你没有多大的好处!!!
第7楼 wudixin96 发表于 2007-04-04 06:10
银牌会员 发帖 931 积分 1,928
一个横排 一个竖排
但为什么横排就不行呢?
理论上也应该能取到的啊?


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

[ Last edited by wudixin96 on 2007-4-4 at 06:13 AM ]
第8楼 NaturalJ0 发表于 2007-04-04 06:13
银牌会员 发帖 533 积分 1,181
因为这个横排特殊,和一般的不同。
第9楼 dikex 发表于 2007-04-04 06:28
高级用户 发帖 366 积分 788
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 ]
第10楼 wudixin96 发表于 2007-04-04 06:34
银牌会员 发帖 931 积分 1,928
是这样啊。偶以为中间是普通的空格分隔符呢

感谢dikex的帮助
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023