コンピュータが FAT32 を使用しているか NTFS を使用しているかをバッチを使用して判断するにはどうすればよいですか。
5 に答える
これを行うにはいくつかの方法があります。
原始的な方法は、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
ファイル システム名を抽出することで、必要なものを見つけることができます。
少し原始的でない方法は、VBScript と WMI を使用してデバイス配列を調べ、関心のある各ボリュームをチェックすることです。
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
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
これは古い質問ですが、これがドライブ ファイル システムを取得して変数として設定するための私の答えです。選択したドライブに%DriveType%
置き換えC:
て、使用場所に応じて以下のコマンドのいずれかを使用します。
バッチ ファイルで使用する場合:
@echo off
for /f "tokens=5" %%a in ('@fsutil fsinfo volumeinfo c:^|findstr /B "File System Name : "') do (@set DriveType=%%a)
echo %DriveType%
pause
コマンド プロンプトで使用する場合:
for /f "tokens=5" %a in ('@fsutil fsinfo volumeinfo c:^|findstr /B "File System Name : "') do @set DriveType=%a
これを試して:
@echo off
SET VOLUME_LETTER=c:
fsutil fsinfo volumeinfo %VOLUME_LETTER% 2>NUL | find /I /N "NTFS">NUL
if [%ERRORLEVEL%] == [0] echo NTFS
もう 1 つの方法 (管理者権限が必要):
fltmc volumes | find ":"
これにより、すべてのドライブのファイル システム タイプが一覧表示されます。たとえば、「:」の代わりに「C:」を使用して、ドライブでフィルタリングできます。