当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 用DOS命令判断磁盘分区是否为NTFS格式

DOS/BAT
Ver、Vol、Ctty命令的使用教程
Setver、Share、Subst命令的使用方法
Expand、Fasthelp、Fc命令的用法
Time、Set、Smartdrv命令的使用方法
Doskey命令的使用方法
dos常用命令列表与使用说明
在DOS下使用长文件名的方法
DOS下内存的配置方法
DOS未公开命令与参数列表
研究下DOS下联网的方法
DOS下网络浏览器的使用方法
IF-ERRORLEVEL使用方法
dos之bat批处理文件语法介绍
写的不错批处理教程一
DOS批处理脚本语言简介与详细说明
一键清除_desktop.ini文件的批处理文件
安全清除你C盘垃圾 让你多出近2G的空间
关于制作一个通用的DOS批处理段注释命令的思路介绍
在批处理文件或配置文件中加入注释
MS-DOS 7.10完整安装版(含图文安装程序)

DOS/BAT 中的 用DOS命令判断磁盘分区是否为NTFS格式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 218 ::
收藏到网摘: n/a

一同事问起,如何使用命令判断磁盘是否是NTFS格式,以便进行进一步执行相关命令操作,如转换磁盘格式或设置文件/文件夹安全权限。
  第一反应,可以使用diskpart。经尝试,可以如下使用:
echo list volume>t.txt && diskpart /s t.txt | find "C " >result.txt && del t.txt
然后使用for语句对输出结果result.txt进行分段判断,但这样的代码看起来过于复杂,而且diskpart只能运行在管理员模式下。
所以使用diskpart命令不太现实。使用cacls进行文件权限设置的时候发现,在运行在非NTFS格式的磁盘上运行会返回1,所以可以如下判断某一磁盘是否为:
cacls c:\ >nul
if %errorlevel%==1 echo C盘不是NTFS格式
  但如上方法只适用与XP/2003,WIN2000无DISKPART命令,且在非NTFS上运行CACLS返回0,虽然可以使用ver命令输出来判断系统是否为XP/2003,但在WIN2000下使用cacls命令难以判断是否为NTFS格式。也许会说按cacls命令输出为空来判断,那如果那个盘刚好是NTFS格式,但无任何安全权限,那就不好说了。
  编写了一WMI脚本(FileSystem.vbs):
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo objItem.Caption & " " & objItem.FileSystem
Next
Next
cscript //nologon filesystem.vbs 可以列出所有盘符的文件系统格式,除了不可用的(如未放光盘的光驱),固可修改批处理如下:
cscript //nologo filesystem.vbs | find "C: NTFS"
if %errorlevel%=1echo C盘不是NTFS格式