中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: fsutil fsinfo drives(已解决) 上一主题 | 下一主题
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『楼 主』:  fsutil fsinfo drives(已解决)

fsutil fsinfo drives >drives.txt
for /f "skip=1 tokens=1 delims=:" %%i in (drives.txt) do set drivers=%%i

这2行有什么错误?为什么不能set drivers?

[ Last edited by Eblis on 2007-1-13 at 11:16 PM ]

2007-1-13 09:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 2 楼』:  

我昏...帮帮忙啊``

2007-1-13 10:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 3 楼』:  

还想问个问题..find 不可以搜索2个字符串吗??
比如find /i "1.txt" "2.txt" 3.txt
搜索3.txt文件里的1.txt 和2.txt  2个字符串..

2007-1-13 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 4 楼』:  

3楼问题找到答案了...用findstr命令可以...帮忙回答1楼的..

2007-1-13 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 5 楼』:  

各位兄弟帮帮忙撒``

2007-1-13 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 6 楼』:  

fsutil fsinfo drives >drives.txt
for /f "skip=1 tokens=1* delims=:" %%I in (drives.txt) do @set drives=%%I %%j

  我只是想把drives.txt里面的:驱动器: C:\ D:\ E:\ F:\ G:\ H:\ set drives=c d e f g h

2007-1-13 11:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



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

发现fsutil fsinfo drives >drives.txt生成的drives.txt里面虽然有内容,但其ascii码居然有很多00!a.txt的内容是从drives.txt里面复制过去的(查看大小同样为32字节),但看看FC /b比较的结果

  Quote:
正在比较文件 drives.txt 和 A.TXT
0000000D: 00 20
00000011: 00 20
00000015: 00 20
00000019: 00 20
0000001D: 00 20

下面的代码也出问题了……
for /f "skip=1 tokens=2-6 delims=:\" %i in ('fsutil fsinfo drives') do echo %i %j %k %l %m %n

这个只有%i显示成功,但将'fsutil fsinfo drives'换为上面那个a.txt时则成功了……
看来是fsutil fsinfo drives的输出有问题了……

这次运行fc drives.txt a.txt得到结果

  Quote:
***** drives.txt

驱动器: C:\
D:\
E:\
F:\
G:\

***** A.TXT

驱动器: C:\ D:\ E:\ F:\ G:\
*****

但用for /f  %i in (a.txt) do echo %i 却只能显示“驱动器:”

[ Last edited by dikex on 2007-1-13 at 02:56 PM ]

2007-1-13 14:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 8 楼』:  

不知道上面的兄弟是怎么复制的..我这里比较却是没有异处
G:\DOS\BAT>fc /b drives.txt 1.txt
正在比较文件 drives.txt 和 1.TXT
FC: 找不到相异处
G:\DOS\BAT>fc /b drives.txt 2.txt
正在比较文件 drives.txt 和 2.TXT
FC: 找不到相异处

1.txt是文件内容复制的..2.txt是copy drives.txt的..都没有不同的..

2007-1-13 16:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 9 楼』:  

for /f "skip=1 tokens=2-10 delims=:\ " %%a in (2.txt) do @set drives=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j

为什么这句之后会显示 set  drives=c d e f g h    %j

2007-1-13 17:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 10 楼』:  

实在想不通了..各位高手..
   不会是要用到..你们说的变量延时吧????我快郁闷死了..我先用
fsutil fsinfo drives >1.txt 然后type 1.txt >2.txt 再执行for 语句还是不能成功...

2007-1-13 17:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 11 楼』:  

***** drives.txt

驱动器: C:\
D:\
E:\
F:\
G:\

我有点明白了为什么只显示一个C了..虽然我们fsutil fsinfo drives输出到文本之后看到是一行..而实际上是换行显示的..所以for 只能显示一条的字符串....

2007-1-13 18:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 12 楼』:  

测试完成..是没有办法显示的..ASCII码显示前2行是回车..不清楚了...希望高手能解答一下为什么会这样显示...

2007-1-13 22:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 13 楼』:  

fsutil fsinfo drives|find /v "">drives.txt

2007-1-14 00:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



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



  Quote:
Originally posted by Eblis at 2007-1-13 03:31 AM:
不知道上面的兄弟是怎么复制的..我这里比较却是没有异处
G:\DOS\BAT>fc /b drives.txt 1.txt
正在比较文件 drives.txt 和 1.TXT
FC: 找不到相异处
G:\DOS\BAT>f ...

双击打开那个文本,然后全选,复制,新建一个文本,粘贴



让我们看看下图中winhex的对比结果吧,20在上面的复制前是00这个结束符的,所以for在处理这些字符串时遇到了00,就以为结束了而不继续处理下去,自然就得不到我们想要的结果了,也就是说对于for来说,它要处理的就只有驱动器: C:\这些数据,因此for /f "skip=1 tokens=2-6 delims=:\" %i in ('fsutil fsinfo drives') do echo %i %j %k %l %m %nfor /f  %i in (a.txt) do echo %i 都只能显示出一部分来

[ Last edited by dikex on 2007-1-13 at 03:31 PM ]

附件 1: 未命名.JPG (2007-1-14 04:30, 45.46 K, 下载附件所需积分 1 点 ,下载次数: 1)


2007-1-14 04:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 15 楼』:  

以前玩过的一段查找盘符改的,感觉比 15 楼的效率稍高些
@echo off
for /f "tokens=1*" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  for /f "tokens=1* delims=:" %%n in ("%%j%%i") do (
call set drive=%%drive%%%%n
)
)
echo %drive%
pause
exit


2007-1-14 05:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: