中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助!如何判断文件系统(半解决)?
作者:
标题: 求助!如何判断文件系统(半解决)? 上一主题 | 下一主题
austion
初级用户





积分 178
发帖 82
注册 2006-5-12
状态 离线
『楼 主』:  求助!如何判断文件系统(半解决)?

在DOS 下如何判断C盘的文件系统是不是FAT32,如果不是加载NTFSDOS?

在这很感谢bagpipe不断的帮忙回答,使我有了点解决这问题的思路了。
我已经解决了这问题了。
我是利用了GHOST这个文件,算是使用外来软件吧,
我的批处理是这样的:
ghost -dd
for /f "skip=2 tokens=2" %%a in ('find "Type " GHSTSTAT.TXT') do @echo %%a
在这里的Type后面是紧跟一个空格,应为有一个不需要的信息里也有Type所以就这样解决了,但是还有问题,我使用下后显示的是
NTFS
NTFS
NTFS
NTFS
NTFS
FAT
FAT
Floppy
CD
Disk
CD

在这我想问问怎样使用批处理去掉:
Floppy
CD
Disk
CD

这些无用的信息呢?
还有这不是说妖在同一主机上使用,而且分区会时常变,还有不一点会是有光驱、软驱、虚拟硬盘等的。

如果单单是检测C盘可以这样做
ghost -dd
for /f "skip=2 tokens=2,3,4" %%a in ('find "Type " GHSTSTAT.TXT') do set austion=%%a&goto 002
:002
echo 你的第一分区的文件系统是:%austion%

但是如果不是判断一个分区的话,那要怎样做?

[ Last edited by austion on 2006-7-13 at 21:10 ]

2006-7-12 19:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 2 楼』:  

@echo off
setlocal
for /f "tokens=2" %%a in ('chkdsk /l') do (
if not defined bagpipe set bagpipe=%%a
)
echo 分区类型是:%bagpipe%


WIN 2000测试通过.............

2006-7-13 10:04
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 3 楼』:  

哦,SORRY,没看清题目.........

2006-7-13 10:07
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
austion
初级用户





积分 178
发帖 82
注册 2006-5-12
状态 离线
『第 4 楼』:  

谢谢了,我在XP里也通过。
我对于FOR不太懂,如果我要是检查的不是C盘那该怎样写?

2006-7-13 12:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 5 楼』:  

@echo off
setlocal
for /f "tokens=2" %%a in ('chkdsk %1 /l') do (
if not defined bagpipe set bagpipe=%%a
)
echo 分区类型是:%bagpipe%

把每个盘作为第一个参数传递给批处理就可以了,例如你保存的批处理文件名是test.bat
那么运行的时候是这样的  test c: 就显示分区C的分区类型
                                   test d: 就显示分区D的分区类型
                                   ...........................................
                                   ..........................................
                                   以此类推..............................

2006-7-13 12:36
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
austion
初级用户





积分 178
发帖 82
注册 2006-5-12
状态 离线
『第 6 楼』:  

谢谢你的帮忙,不过就是使用你的代码,
例如C盘是NTFS的
%bagpipe%变量最后是NTFS。
怎样才能使%bagpipe%变量最后是NTFS呢?

2006-7-13 13:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 7 楼』:  

@echo off
setlocal
for /f "tokens=2 delims=。 " %%a in ('chkdsk %1 /l') do (
if not defined bagpipe set bagpipe=%%a
)
echo 分区类型是:%bagpipe%


我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....我晕....

2006-7-13 13:19
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
austion
初级用户





积分 178
发帖 82
注册 2006-5-12
状态 离线
『第 8 楼』:  

谢谢!虽然在DOS 下XP自带的CHKDSK.EXE是不能运行,不过这也接近了解决的方法了。

[ Last edited by austion on 2006-7-13 at 17:31 ]

2006-7-13 16:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flysp
中级用户




积分 207
发帖 41
注册 2004-10-24
状态 离线
『第 9 楼』:  

setlocal 在这里起什么做用

2006-7-13 19:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 10 楼』:  

想要在DOS下:

00000055 33 32
先获取 DBR,再看偏移55处两字节是不是 0x33 0x32

可参考我的程序:中的dofat.c
**********************
地址:
http://www.cn-dos.net/forum/viewthread.php?tid=21493&fpage=1

2006-7-13 20:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: