UltraDefrag command line (console) interface can be used to automate defragmentation via batch scripts and scheduled tasks. Also it can be used instead of the graphical interface by those who prefer command line environment.
Also UltraDefrag uses its command line interface to handle its context menu entries in Windows Explorer. Right click any object and select Defragment with UltraDefrag to rejoin its clusters. To stop defragmentation hit Ctrl+C or close the command prompt. To configure the context menu handler click Settings > Options in UltraDefrag GUI or edit the following file manually: {installation folder}\conf\options.lua.
- Note
- The context menu handler is not available from the portable edition of the program.
UltraDefrag puts its command line tool to the %SystemRoot%\system32 folder, so it can be used without the full path specification. Just make sure you run it from an elevated command prompt as it requires administrative rights.
Usage:
udefrag [command] [options] [driveletter:] [path(s)]
Commands:
- -a, --analyze
- Analyze specified objects.
- -o, --optimize
- Perform full optimization.
- -q, --quick-optimization
- Perform quick optimization.
- --optimize-mft
- Optimize master file tables only.
- -l, --list-available-volumes
- List all fixed disks available for defragmentation.
- -la, --list-available-volumes=all
- List all available disks, including removable.
- -h, -?, --help
- Display help.
- Note
- The commands are exclusive and can't be combined with each other. If none is specified the program defragments selected objects.
Options:
- -b, --use-system-color-scheme
- Disable colorization of output.
- -p, --suppress-progress-indicator
- Hide the progress indicator and the cluster map.
- -v, --show-volume-information
- Show disk information after the job completion.
- -m, --show-cluster-map
- Show the cluster map.
- --map-border-color=color
- Set color of the cluster map border. Available colors: black, white, red, green, blue, yellow, magenta, cyan, darkred, darkgreen, darkblue, darkyellow, darkmagenta, darkcyan, gray. Yellow is used by default.
- --map-symbol=x
- Set the character to draw the cluster map with. Type it directly or use its hexadecimal number (in range 0x1 ... 0xFF). For instance, use --map-symbol=0x1 to draw the map with a smile character. The % symbol is used by default.
- --map-rows=n
- Set height of the cluster map. The default value is 10.
- --map-symbols-per-line=n
- Set width of the cluster map. The default value is 68.
- --use-entire-window
- Expand the cluster map to use the entire console window.
- --wait
- Wait for completion of other UltraDefrag instances before the job startup (useful for scheduled tasks).
- --shellex
- List selected objects and display a prompt to hit any key after the job completion. This switch is intended to handle the context menu entries in Windows Explorer, so the program interpretes the options.lua file mentioned above and ignores all the environment variables listed below.
Drive letters:
List of space separated drive letters or one of the following switches:
- --all
- Process all available drives.
- --all-fixed
- Process all non-removable drives.
Paths:
List of space separated paths which need to be defragmented. Both absolute and relative paths are supported, as well as wildcards: the question mark (?) matches any one character, while the asterisk (*) - any zero or more characters. Thus *.* matches any file with an extension while a single asterisk (*) matches anything (with or without an extension). All paths including spaces must be enclosed by double quotes:
udefrag d: e:
udefrag "%USERPROFILE%\*"
udefrag "..\Test Files\*"
udefrag C:\WINDOWS\WindowsUpdate.log
udefrag d: e: "%USERPROFILE%\*" "..\Test Files\*" C:\WINDOWS\WindowsUpdate.log
udefrag C:\WINDOWS
If command line is empty the program displays help.
Environment variables
Filter variables
- UD_IN_FILTER
- List of semicolon separated paths which need to be defragmented.
Empty list means that everything needs to be defragmented.
- UD_EX_FILTER
- List of semicolon separated paths which need to be skipped, i.e. left untouched.
- UD_FRAGMENT_SIZE_THRESHOLD
- Eliminate only fragments smaller than specified.
The following size suffixes are accepted: KB, MB, GB, TB, PB, EB.
- UD_FILE_SIZE_THRESHOLD
- Exclude all files larger than specified.
The following size suffixes are accepted: KB, MB, GB, TB, PB, EB.
- UD_OPTIMIZER_FILE_SIZE_THRESHOLD
- For optimization only, exclude all files larger than specified.
The following size suffixes are accepted: KB, MB, GB, TB, PB, EB.
The default value is 20MB.
- UD_FRAGMENTS_THRESHOLD
- Exclude files having less fragments than specified.
- UD_SORTING
- Set sorting criteria for the disk optimization. PATH is used by default, it forces to sort files by their paths. Four more options are available: SIZE (sort by size), C_TIME (sort by creation time), M_TIME (sort by last modification time) and A_TIME (sort by last access time).
- UD_SORTING_ORDER
- Set sorting order for the disk optimization. ASC (ascending) is used by default. DESC (descending) forces to sort files in reverse order.
- UD_FRAGMENTATION_THRESHOLD
- Cancel all tasks except of the MFT optimization when the disk fragmentation level is below than specified.
Process variables
- UD_TIME_LIMIT
- Terminate the job automatically when the specified time interval elapses. The following time format is accepted: Ay Bd Ch Dm Es. Here A,B,C,D,E represent integer numbers while y,d,h,m,s represent years, days, hours, minutes and seconds.
- UD_REFRESH_INTERVAL
- The progress refresh interval, in milliseconds. The default value is 100.
- UD_DISABLE_REPORTS
- Set it to 1 (one) to disable generation of the file fragmentation reports.
Debugging variables
- UD_DBGPRINT_LEVEL
- Set amount of debugging output. NORMAL is used by default, DETAILED can be used to collect information for a bug report, PARANOID turns on really huge amount of debugging information.
- UD_LOG_FILE_PATH
- Set log file path (including file name) to redirect debugging output to a file.
- UD_DRY_RUN
- Set it to 1 (one) to avoid physical movements of files, i.e. to simulate the disk processing. This allows to check out algorithms quickly.
Samples
Batch scripts can be used to automate complex defragmentation tasks:
@echo off
set UD_LOG_FILE_PATH=C:\Windows\Temp\udefrag.log
set UD_TIME_LIMIT=6h 30m
set UD_EX_FILTER=*system volume information*;*temp*;*tmp*;*recycle*
set UD_EX_FILTER=%UD_EX_FILTER%;*.zip;*.7z;*.rar
set UD_FRAGMENT_SIZE_THRESHOLD=20MB
udefrag -la
for /F "tokens=1 skip=8" %%D in ('udefrag -la') do chkdsk %%D
udefrag -a --all-fixed
udefrag c:
set UD_IN_FILTER=*.mp3
set UD_FILE_SIZE_THRESHOLD=20MB
udefrag "D:\My Docs\Music\*"
set UD_IN_FILTER=*.avi;*.mkv
set UD_FILE_SIZE_THRESHOLD=
set UD_FRAGMENTS_THRESHOLD=10
udefrag "D:\My Docs\Movies\*"
udefrag --optimize-mft c: d:
set UD_IN_FILTER=
set UD_FRAGMENTS_THRESHOLD=
set UD_SORTING=C_TIME
set UD_SORTING_ORDER=DESC
udefrag -o g:
set UD_FRAGMENTATION_THRESHOLD=10
udefrag h:
set UD_EX_FILTER=%UD_EX_FILTER%;C:\*;D:\*;G:\*;H:\*
udefrag --all-fixed
echo select volume c:\games > script
echo assign letter=t >> script
diskpart /s script
udefrag t:
echo select volume c:\games > script
echo remove letter=t >> script
diskpart /s script
hibernate4win now
if errorlevel 1 shutdown -s -t 00