用DOS命令判斷磁盤分區(qū)是否為NTFS格式
更新時(shí)間:2007年03月15日 00:00:00 作者:
一同事問(wèn)起,如何使用命令判斷磁盤是否是NTFS格式,以便進(jìn)行進(jìn)一步執(zhí)行相關(guān)命令操作,如轉(zhuǎn)換磁盤格式或設(shè)置文件/文件夾安全權(quán)限。
第一反應(yīng),可以使用diskpart。經(jīng)嘗試,可以如下使用:
echo list volume>t.txt && diskpart /s t.txt | find "C " >result.txt && del t.txt
然后使用for語(yǔ)句對(duì)輸出結(jié)果result.txt進(jìn)行分段判斷,但這樣的代碼看起來(lái)過(guò)于復(fù)雜,而且diskpart只能運(yùn)行在管理員模式下。
所以使用diskpart命令不太現(xiàn)實(shí)。使用cacls進(jìn)行文件權(quán)限設(shè)置的時(shí)候發(fā)現(xiàn),在運(yùn)行在非NTFS格式的磁盤上運(yùn)行會(huì)返回1,所以可以如下判斷某一磁盤是否為:
cacls c:\ >nul
if %errorlevel%==1 echo C盤不是NTFS格式
但如上方法只適用與XP/2003,WIN2000無(wú)DISKPART命令,且在非NTFS上運(yùn)行CACLS返回0,雖然可以使用ver命令輸出來(lái)判斷系統(tǒng)是否為XP/2003,但在WIN2000下使用cacls命令難以判斷是否為NTFS格式。也許會(huì)說(shuō)按cacls命令輸出為空來(lái)判斷,那如果那個(gè)盤剛好是NTFS格式,但無(wú)任何安全權(quán)限,那就不好說(shuō)了。
編寫了一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 可以列出所有盤符的文件系統(tǒng)格式,除了不可用的(如未放光盤的光驅(qū)),固可修改批處理如下:
cscript //nologo filesystem.vbs | find "C: NTFS"
if %errorlevel%=1echo C盤不是NTFS格式
第一反應(yīng),可以使用diskpart。經(jīng)嘗試,可以如下使用:
echo list volume>t.txt && diskpart /s t.txt | find "C " >result.txt && del t.txt
然后使用for語(yǔ)句對(duì)輸出結(jié)果result.txt進(jìn)行分段判斷,但這樣的代碼看起來(lái)過(guò)于復(fù)雜,而且diskpart只能運(yùn)行在管理員模式下。
所以使用diskpart命令不太現(xiàn)實(shí)。使用cacls進(jìn)行文件權(quán)限設(shè)置的時(shí)候發(fā)現(xiàn),在運(yùn)行在非NTFS格式的磁盤上運(yùn)行會(huì)返回1,所以可以如下判斷某一磁盤是否為:
cacls c:\ >nul
if %errorlevel%==1 echo C盤不是NTFS格式
但如上方法只適用與XP/2003,WIN2000無(wú)DISKPART命令,且在非NTFS上運(yùn)行CACLS返回0,雖然可以使用ver命令輸出來(lái)判斷系統(tǒng)是否為XP/2003,但在WIN2000下使用cacls命令難以判斷是否為NTFS格式。也許會(huì)說(shuō)按cacls命令輸出為空來(lái)判斷,那如果那個(gè)盤剛好是NTFS格式,但無(wú)任何安全權(quán)限,那就不好說(shuō)了。
編寫了一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 可以列出所有盤符的文件系統(tǒng)格式,除了不可用的(如未放光盤的光驅(qū)),固可修改批處理如下:
cscript //nologo filesystem.vbs | find "C: NTFS"
if %errorlevel%=1echo C盤不是NTFS格式
您可能感興趣的文章:
相關(guān)文章
phpsh hpcli開(kāi)發(fā)的終極方案(php版本切換的 批處理)
最近用php代替vbs腳本,做些小工具的開(kāi)發(fā),了方便測(cè)試不同php版本的兼容,專門寫了一個(gè) php版本切換的 批處理 phpsh.cmd,支持安裝到系統(tǒng)、卸載等功能,還支持多個(gè)php版本的任意切換需要先安裝phpStudy2020-08-08修改Windows Server 2008 R2 的3389遠(yuǎn)程端口的Bat批處理代碼
這篇文章主要介紹了修改Windows Server 2008 R2 的3389遠(yuǎn)程端口的Bat批處理代碼,需要的朋友可以參考下2017-06-06XCOPY只拷貝當(dāng)天文件的實(shí)現(xiàn)代碼
最近由于需要備份一些文件,一般只需要備份當(dāng)前的文件就可以了,聽(tīng)過(guò)xcopy支持這個(gè)方法,代碼也比較簡(jiǎn)單特分享下,方便需要的朋友2014-04-04windows xp下沒(méi)有dos的choice命令的解決方法
dos6.0下能實(shí)現(xiàn)的choice選項(xiàng),但是因?yàn)閏hoice是外部命令,在xp中沒(méi)有choice.exe所以不能實(shí)現(xiàn)選擇菜單。解決辦法:用SET命令代替2017-03-03使用批處理實(shí)現(xiàn)啟動(dòng)和停止服務(wù)的代碼分析(net start&net stop)
由于平時(shí)很多服務(wù)開(kāi)機(jī)后并未真正需要,而它們卻自動(dòng)開(kāi)機(jī)啟動(dòng),占用很多系統(tǒng)資源,因此通過(guò)批處理的方法來(lái)手動(dòng)啟動(dòng)或關(guān)閉它們.2011-03-03Chdir (Cd) 顯示當(dāng)前目錄的名稱,或更改當(dāng)前的文件夾
Chdir (Cd) 顯示當(dāng)前目錄的名稱,或更改當(dāng)前的文件夾...2007-09-09