File and Volume specific commands, Hardlink management, Quota management, USN, Sparse file, Object ID and Reparse point management.
8dot3name FIlename management options (for the Local System):
Show the current setting for shortname behaviour: FSUTIL 8dot3name query Scan for affected registry entries: FSUTIL 8dot3name scan [/s] [/l log_file] [/v] DirectoryPath /s Recurse to subdirectories. /l Log to file. /v Verbose, output log to the console. Change the setting for shortname behaviour: FSUTIL 8dot3name set [0 through 3] [volume_Path] 1 | 0] When a volume is not specified, this updates the registry 0 - Enable 8dot3 creation on all volumes 1 - Disable 8dot3 creation on all volumes 2 - Set 8dot3 creation on a per volume basis 3 - Disable 8dot3 creation on all volumes other than the system volume. When a volume is specified, this updates individual volume's on disk flag. This operation is only meaningful if the registry value is set to 2. 0 - Enable 8dot3 creation on this volume 1 - Disable 8dot3 creation on this volume Remove the shortnames for all files within a directory: FSUTIL 8dot3name strip [/t] [/s] [/f] [/l log_file] [/v] DirectoryPath This command will permanently remove 8dot3 filenames from a volume. It will list the registry keys pointing to the stripped filenames but will not modify the affected registry keys. Stripping will not be performed on any files with full path names longer than the maximum path length of 260 chars. **WARNING** If there are affected registry keys and you use the override switch /f it is recommended that you backup your volume as it may lead to unexpected application failures including the inability to uninstall. /t - Test mode, perform all operations except the actual stripping of filenames. /s - Recurse all subdirectories /f - Force, Strip the directory 8.3 filenames even if there are registry conflicts. /v - Verbose mode, output log to the console. /l - Specify an output log file, if not specified this will default to "%temp%\8dot3_removal_log@(GMT YYYY-MM-DD HH-MM-SS)" EXAMPLE: fsutil 8dot3name strip /l SS64.log /s D:\datafiles
File system Behavior options:
FSUTIL behavior query option FSUTIL behavior set option Where option is one of: AllowExtChar {0|1} Allow extended characters in filenames BugcheckOnCorrupt {0|1} Enable bugcheck DisableCompression {0|1} Disable compression DisableEncryption {0|1} Disable encryption DisableDeleteNotify {0|1} SSD TRIM Delete notifications for all volumes 0=TRIM enabled, 1=TRIM disabled. DisableLastaccess {0|1} Don’t generate last-access times Disable8dot3 [volumePath] sfnNum sfnNum is between 0 and 3 0 = Create short file names (default). 1 = don’t create short file names. 2 = Set 8.3 names on a per volume basis. 3 = Disable 8.3 names on all volumes except the system volume. EncryptPagingfile {0|1} QuotaNotify NumSeconds Log quota violations, default=3600 seconds memoryusage {1|2} Paged-pool memory cache, 1=default MftZone {1|2|3|4} Set MFT Zone, multiple of 200MB SymlinkEvaluation L2L:{0|1} Local to local symbolic links SymlinkEvaluation L2R:{0|1} Local to remote symbolic links SymlinkEvaluation R2R:{0|1} Remote to local symbolic links SymlinkEvaluation R2L:{0|1} Remote to remote symbolic links 1 = enable option 0 = Disable option Eg : FSUTIL behavior set disablelastaccess 1 FSUTIL dirty query volume [pathname] FSUTIL dirty set volume [pathname] Marking a disk as dirty will prompt a Chkdsk at next boot Eg : FSUTIL dirty query C:
Create a new file of a specific size:
FSUTIL file createnew filename length Eg : fsutil file createnew C:\testfile.txt 1000
Find a file by user name (if Disk Quotas are enabled):
FSUTIL file findbysid user directory Eg : fsutil file findbysid scottb C:\users
Query the allocated ranges for a file:
FSUTIL file queryallocranges offset=val length=val filename offset : File Offset, the start of the range to query length : Size, in bytes, of the range Eg : fsutil file queryallocranges offset=1024 length=64 C:\Temp\sample.txt
Query the file ID of a file:
FSUTIL file queryFileid filename
Display a random link name for the file ID (in most cases the file ID will only have one link name):
FSUTIL file queryFileNamebyid volume fileID
Enable or disable linux style case sensitivity support for a folder (Windows 10 1803+):
FSUTIL file SetCaseSensitiveInfo C:\folder\path enable FSUTIL file SetCaseSensitiveInfo C:\folder\path disable
Set the short NTFS filename for a file:
FSUTIL file setshortname filename ShortName Eg : fsutil file setshortname C:\testfile.txt tes1.txt
Set the valid data length for a file:
FSUTIL file setvaliddata filename datalength Eg : fsutil file setvaliddata C:\testfile.txt 4096
Set the zero data for a file:
FSUTIL file setzerodata offset=val length=val filename offset : File offset, the start of the range to set to zeroes length : Byte length of the zeroed range Eg : fsutil file setzerodata offset=100 length=150 C:\Temp\sample.txt
List all drives (including mapped and Subst drives):
FSUTIL fsinfo drives
Query drive type for a drive:
FSUTIL fsinfo drivetype volume pathname Eg : fsutil fsinfo drivetype C: Script to list all drives on the local computer: @Echo off :: Store all the drive letters currently in use in a variable For /f "tokens=*" %%L in ('FSUTIL fsinfo drives') do (set _drives=%%L) :: Remove the first 8 characters - the 'Drives:' prefix :: this may need to adjusted for other languages/locales Set _drives=%_drives:~8% :: Find and Display the drive type of each drive For %%D in (%_drives%) do (FSUTIL fsinfo drivetype %%D)
Query volume information:
FSUTIL fsinfo volumeinfo volume pathname Eg : fsutil fsinfo volumeinfo C:\
Query NTFS specific volume information:
FSUTIL fsinfo ntfsinfo volume pathname Eg : fsutil fsinfo ntfsinfo C:
Query file system statistics:
FSUTIL fsinfo statistics volume pathname Eg : fsutil fsinfo statistics C:
Create a hardlink:
FSUTIL hardlink create New_filename Existing_filename Eg : fsutil hardlink create c:\foo.txt c:\bar.txt
List hardlink(s) for a file:
FSUTIL hardlink list filename
Edit an object identifier:
FSUTIL objectid {query | set | delete | create}
QUOTA Management:
FSUTIL quota {query|disable|track|enforce } C: FSUTIL quota violations FSUTIL quota modify volume_pathname threshold limit user Eg : fsutil quota modify c: 3000 5000 domain\user
Self healing management:
FSUTIL repair query volume pathname FSUTIL repair set volume pathname flags Flags: 0x01 - enable general repair 0x08 - warn about potential data loss 0x10 - Disable general repair and bugcheck once on first corruption. FSUTIL repair wait volume pathname [wait_type] Wait types: 0 - Wait for all repairs (default) 1 - Wait for the current repair FSUTIL repair initiate volume pathname file_ref# file_ref# : File reference including segment number of the file.
Query a reparse point:
FSUTIL reparsepoint query filename Eg : fsutil reparsepoint query C:\Server
Delete a reparse point:
FSUTIL reparsepoint delete filename Eg : fsutil reparsepoint delete C:\Server
Transactional Resource Manager management:
FSUTIL resource create RM_root_pathanme FSUTIL resource info RM_root_pathanme Clean transactional metadata on next mount? FSUTIL resource setautoreset {true|false} RM_root_pathanme Prefer consistency over availability: FSUTIL resource setconsistent RM_root_pathanme Prefer availability over consistency: FSUTIL resource setavailable RM_root_pathanme FSUTIL resource setlog {growth | maxextents | minextents | mode | rename | shrink | size} FSUTIL resource start RM_root_pathanme RM_log_pathanme FSUTIL resource stop RM_root_pathanme RM_log_pathanme FSUTIL transaction commit guid FSUTIL transaction list FSUTIL transaction fileinfo filename FSUTIL transaction query files|all guid FSUTIL transaction rollback guid
Set sparse file properties:
FSUTIL sparse queryflag filename FSUTIL sparse setflag filename FSUTIL sparse queryrange filename FSUTIL sparse setrange filename Beginning_offset Length Eg : fsutil sparse queryflag "C:\My Test.txt"
Manage the update sequence number (USN) change journal:
FSUTIL usn createjournal m=max a=alloc-delta Volume_pathname FSUTIL usn deltejournal flags Volume_pathname Deleting the change journal impacts the File Replication and the Indexing Service, it will require a complete (and time-consuming) scan of the volume. FSUTIL usn enumdata file_ref# lowusn highusn Volume_pathname FSUTIL usn queryjournal Volume_pathname FSUTIL usn readdata filename
Volume management:
FSUTIL volume dismount Volume_pathname FSUTIL volume diskfree Volume_pathname FSUTIL volume querycluster Volume_pathname cluster [cluster...]
To run FSUTIL, you must be logged on as an administrator or a member of the Administrators group.
Sparse files provide a method of saving disk space for files that contain meaningful data as well as large sections of data composed of zeros. If an NTFS file is marked as sparse, then disk clusters are allocated only for the data explicitly specified by the application.
e.g. The Indexing Service, stores it's catalogs as sparse files.
With 8.3 filennames disabled you'll notice a performance improvement only with a large number of files (over 300,000) in relatively few folders where a lot of the filenames start with similar names. Not having 8.3 filenames available will prevent the use of old applications such as Word 2.0 and Excel 4.0
If you have a lot of small files, you might need a larger Master File Table to avoid MFT fragmentation:
FSUTIL behavior set mftzone 2 will reserve 25 % of the volume for the MFT.
1 = 12.5 %(default)
2 = 25%
3 = 37.5%
4 = 50%
This won't affect existing disk partitions, after changing the mftzone size, reboot the machine and create a new partition.
In Windows7 and Server 2008 the mft zone is allocated in blocks of 200MB:
1 = 200 MB (default)
2 = 400 MB
3 = 600 MB
4 = 800 MB
Increasing the MFT zone does not decrease the disk space available for data files.
The last access time attribute of NTFS can slow performance, if you disable it, the time set will simply be the Creation Time.
FSUTIL behavior set disablelastaccess 1
Bugs
FSUTIL outputs a NULL character (not a space) after every drive specifier, this can cause difficulty when piping the output of fsutil into other commands (particularly FOR). The output from FSUTIL varies by OS see this forum thread for more detail.
Some features in fsutil are reported to not work correctly under FAT or FAT32 volumes e.g. FSUTIL dirty query.
“You can tune a file system, but you can't tune a fish” ~ Sun man page for tunefs
Related:
Q982018 - FSUTIL update - compatibility with Advanced Format Disks.
CACLS - Change file permissions.
CHKNTFS - Check the NTFS file system.
DevCon - Device Manager Command Line Utility.
DIRUSE - Display disk usage.
DISKSHADOW - Volume Shadow Copy Service.
MKLINK - Create a symbolic link (linkd)
PSINFO -d - Display drive information.
Q174619 - MFT How NTFS reserves space for its Master File Table.