用DOS命令判断磁盘分区是否为NTFS格式
程序员文章站
2022-06-23 18:31:22
一同事问起,如何使用命令判断磁盘是否是ntfs格式,以便进行进一步执行相关命令操作,如转换磁盘格式或设置文件/文件夹安全权限。 第一反应,可以使用diskp...
一同事问起,如何使用命令判断磁盘是否是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格式
第一反应,可以使用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格式
上一篇: 用DOS杀毒的一个不错的应用
下一篇: 常用正则表达式与批注[收藏]