如何使用批处理来确定计算机是使用FAT32还是NTFS?

时间:2011-08-09 11:57:23

标签: batch-file ntfs fat32

如何使用批处理来确定计算机是否使用FAT32或NTFS,这是否可行。

4 个答案:

答案 0 :(得分:7)

有几种方法可以做到这一点。

一种基本方法是在您感兴趣的卷上运行chkdsk并捕获输出。部分输出指示磁盘是否为NTFS。不幸的是,这比预期的要多,可能需要一些时间。

同样,您可以解析fsutil fsinfo volumeinfo c:\的输出,如:

Volume Name : Primary
Volume Serial Number : 0x4f70e7b
Max Component Length : 255
File System Name : NTFS
Supports Case-sensitive filenames
Preserves Case of filenames
Supports Unicode in filenames
Preserves & Enforces ACL's
Supports file-based Compression
Supports Disk Quotas
Supports Sparse files
Supports Reparse Points
Supports Object Identifiers
Supports Encrypted File System
Supports Named Streams

通过提取文件系统名称,您可以找到所需内容。

稍微不那么原始的方法是使用带有WMI的VBScript来遍历设备阵列,检查您感兴趣的每个卷。

Win32_LogicalDisk类(在Windows 2000及更高版本中提供)具有FileSystem属性,表明了这一点,您可以使用以下代码作为基础:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colVols = objWMIService.ExecQuery ("select * from Win32_LogicalDisk")
For Each objVol in colVols
     MsgBox objVol.Name & " : " & objVol.FileSystem
Next

答案 1 :(得分:5)

看起来尝试在FAT卷上使用备用文件流(file.name:strmname)失败,那么如何:

@echo off
set drv=C:
set file=temp.temp

if exist %drv%\%file% del %drv%\%file%
@echo 1 > %drv%\%file%:stream
if not exist %drv%\%file% goto FAT

:NTFS
echo is NTFS
del %drv%\%file%
goto eof

:FAT
echo is FAT
goto eof

:eof

答案 2 :(得分:2)

试试这个:

@echo off
SET VOLUME_LETTER=c:
fsutil fsinfo volumeinfo %VOLUME_LETTER% 2>NUL | find /I /N "NTFS">NUL

if [%ERRORLEVEL%] == [0] echo NTFS

答案 3 :(得分:1)

另一种方式(需要管理员权限):

fltmc volumes | find ":"

这将列出所有驱动器的文件系统类型。您可以使用例如“C:”代替“:”按驱动器进行过滤。