Contoh skrip batch
Terakhir diperbarui pada
Periksa contoh skrip batch berikut untuk mempelajari cara mengotomatiskan sepenuhnya tugas defragmentasi umum menggunakan UltraDefrag CLI.
Skrip kustom default untuk defragmentasi otomatis
Secara default, UltraDefrag menggunakan skrip khusus berikut untuk defragmentasi otomatis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | @echo off :: :: UltraDefrag - a powerful disk defragmenter for Windows. :: :: auto-defrag-custom.cmd - custom script for automatic defragmentation. :: :: Visit https://en.wikibooks.org/wiki/Windows_Batch_Scripting :: for general information about the script syntax. :: :: Refer to the UltraDefrag CLI section of UltraDefrag documentation :: at https://https://ultradefrag.net/support/ultradefrag-cli/ :: for detailed information about the `udefrag` command and environment :: variables controlling its behaviour. :: :: To use Unicode characters in filters edit this file in the Notepad++ :: editor and then save it in UTF-8 (without BOM) encoding. :: :: Also Notepad++ features syntax highlighting which makes it much easier :: to edit the file. The latest version of Notepad++ can be downloaded :: for free from http://www.notepad-plus-plus.org/ :: :: Below is a sample script. It defragments system drive and heavily :: fragmented content on all the connected non-removable drives. :: Feel free to adjust it to make it more suitable for your needs, :: replace it entirely or keep as is. :: first of all, let's set UD_EX_FILTER to exclude all :: the stuff which rarely benefits from defragmentation :: exclude temporary content set UD_EX_FILTER=*system volume information*;*temp*;*tmp*;*recycle* set UD_EX_FILTER=%UD_EX_FILTER%;*dllcache*;*ServicePackFiles*;*.log set UD_EX_FILTER=%UD_EX_FILTER%;*Windows.old*;*\Windows\servicing\* :: exclude archives set ARCHIVE_PATTERNS=*.7z;*.7z.*;*.arj;*.bkf;*.bz2;*.bzip2;*.cab;*.cpio;*.deb set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.dmg;*.gz;*.gzip;*.lha;*.lzh;*.lzma set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.rar;*.rpm;*.swm;*.tar;*.taz;*.tbz set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.tbz2;*.tgz;*.tpz;*.txz;*.xar;*.xz set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.z;*.zip set UD_EX_FILTER=%UD_EX_FILTER%;%ARCHIVE_PATTERNS% :: exclude multimedia content set AUDIO_PATTERNS=*.aif;*.cda;*.flac;*.iff;*.kpl;*.m3u;*.m4a;*.mid set AUDIO_PATTERNS=%AUDIO_PATTERNS%;*.mp3;*.mpa;*.ra;*.wav;*.wma set VIDEO_PATTERNS=*.3g2;*.3gp;*.asf;*.asx;*.avi;*.flv;*.mov;*.mp4 set VIDEO_PATTERNS=%VIDEO_PATTERNS%;*.mpg;*.rm;*.srt;*.swf;*.vob;*.wmv set UD_EX_FILTER=%UD_EX_FILTER%;%AUDIO_PATTERNS%;%VIDEO_PATTERNS% :: exclude virtual machines set DISK_IMAGE_PATTERNS=*.fat;*.hdd;*.hfs;*.img;*.iso;*.ntfs;*.squashfs set DISK_IMAGE_PATTERNS=%DISK_IMAGE_PATTERNS%;*.vdi;*.vhd;*.vmdk;*.wim set UD_EX_FILTER=%UD_EX_FILTER%;%DISK_IMAGE_PATTERNS% :: exclude big fragments which rarely benefit from defragmentation set UD_FRAGMENT_SIZE_THRESHOLD=20MB :: on solid state drives exclude slightly fragmented content as well set UD_SSD_FRAGMENTS_THRESHOLD=20 :: uncomment the following line to increase amount of debugging output :: set UD_DBGPRINT_LEVEL=DETAILED :: defragment system drive set UD_LOG_FILE_PATH=%UD_INSTALL_DIR%\logs\autodefrag-system.log udefrag --wait %SystemDrive% :: defragment heavily fragmented content :: on all the connected non-removable drives set UD_LOG_FILE_PATH=%UD_INSTALL_DIR%\logs\autodefrag-fixed.log set UD_FRAGMENTS_THRESHOLD=20 udefrag --wait --all-fixed |
Memeriksa semua disk yang tersedia untuk mencari kesalahan
Jika disk yang ingin Anda defragmentasi belum diperiksa kesalahannya dalam waktu lama, sebaiknya periksa semuanya menggunakan chkdsk sebelum melakukan defragmentasi.
Silakan gunakan skrip berikut untuk mengotomatiskan proses sepenuhnya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | @echo off :: :: This script defragments all the available non-removable disks. :: If some disks have errors the script repairs them first. If it :: is impossible to repair a disk because it is in use, the script :: schedules the repair for the next system reboot and skips the disk. :: :: set the UltraDefrag specific environment :: variables according to the user preferences call "%UD_INSTALL_DIR%\setenv.cmd" :: defragment the disks for /f "skip=7 tokens=1" %%d in ('udefrag -l') do call :defragment %%d :: clear the environment variables and exit call "%UD_INSTALL_DIR%\clearenv.cmd" exit /B 0 :: :: This procedure defragments a single disk. :: :: Usage: :: :: call :defragment <drive_letter> :: :defragment echo Preparing to check the disk %1 for errors... echo. chkdsk %1 echo. :: if the disk has errors, try to repair it if "%ERRORLEVEL%" equ "3" ( echo y | chkdsk /f %1 echo. ) :: if the disk had no errors or the repair :: was successful, defragment the disk if "%ERRORLEVEL%" neq "3" ( echo Preparing to defragment the disk %1... echo. udefrag %1 echo. ) exit /B 0 |
Defragmentasi lengkap pada semua disk yang tersedia
Memeriksa secara manual apakah Anda memiliki file terfragmentasi yang terkunci di disk Anda atau tidak, dan melakukan defragmentasi saat booting jika file tersebut ada, bisa jadi membosankan.
Anda dapat menggunakan skrip berikut untuk mengotomatiskan proses sepenuhnya. Selain itu, skrip ini melakukan defragmentasi disk secara berkala dan mengoptimalkan tabel file master jika perlu dioptimalkan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | @echo off :: :: This script performs complete defragmentation :: of all the available non-removable disks. :: :: set the UltraDefrag specific environment :: variables according to the user preferences call "%UD_INSTALL_DIR%\setenv.cmd" :: perform regular defragmentation of the disks for /f "skip=7 tokens=1" %%d in ('udefrag -l') do call :defragment %%d :: optimize master file tables if "%MFT_OPT_DISKS%" neq "" ( echo Preparing to optimize the master file tables on %MFT_OPT_DISKS%... echo. udefrag --optimize-mft %MFT_OPT_DISKS% echo. ) :: enqueue defragmentation of locked files (they will be defragmented using :: the boot time interface of UltraDefrag at the next system reboot) if "%BT_DEFRAG_DISKS%" neq "" ( echo Enqueuing the boot time defragmentation of %BT_DEFRAG_DISKS%... echo. call "%UD_INSTALL_DIR%\bt.cmd" /E udefrag %BT_DEFRAG_DISKS% ) :: clear the environment variables used above and exit call "%UD_INSTALL_DIR%\clearenv.cmd" set MFT_OPT_DISKS= set BT_DEFRAG_DISKS= exit /B 0 :: :: This procedure defragments a single disk. :: :: Usage: :: :: call :defragment <drive_letter> :: :defragment echo Preparing to defragment disk %1... echo. :: defragment the disk udefrag %1 || exit /B 1 echo. :: check the file fragmentation report for /f "eol=; tokens=5,6 usebackq" %%a in (`call "%UD_INSTALL_DIR%\show-report.cmd" %1`) do ( if /i "%%a" equ "locked" set LOCKED_FILES_ARE_FRAGMENTED=1 if /i "%%b" equ "%1\$MFT" set MFT_IS_FRAGMENTED=1 ) :: if the $MFT file is fragmented, enqueue the disk for the MFT optimization if "%MFT_IS_FRAGMENTED%" equ "1" set MFT_OPT_DISKS=%MFT_OPT_DISKS% %1 :: if locked files are fragmented, enqueue the disk for the boot time defragmentation if "%LOCKED_FILES_ARE_FRAGMENTED%" equ "1" set BT_DEFRAG_DISKS=%BT_DEFRAG_DISKS% %1 :: clear the environment variables used above set MFT_IS_FRAGMENTED= set LOCKED_FILES_ARE_FRAGMENTED= exit /B 0 |
Optimalisasi semua disk yang tersedia
Jika Anda akan mengoptimalkan disk menggunakan skrip waktu boot kustom, pertimbangkan untuk mengatur UD_SSD_DEFRAGMENT_AND_TRIM_ONLY variabel lingkungan sebelum optimasi disk, terutama jika Anda memiliki solid state drive (SSD) yang terpasang di sistem Anda. Opsi ini sangat mempersingkat waktu optimasi SSD tanpa mengurangi efisiensi optimasi. Selain itu, ini juga memperpanjang umur SSD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @echo off :: :: This script performs the full optimization :: of all the available non-removable disks :: except solid state drives (SSD) for which :: it performs defragmentation and trimming only. :: call "%UD_INSTALL_DIR%\setenv.cmd" :: skip slightly fragmented files on SSD set UD_SSD_FRAGMENTS_THRESHOLD=20 :: during SSD optimization defragment and trim the disk only set UD_SSD_DEFRAGMENT_AND_TRIM_ONLY=1 udefrag -o --all-fixed |
Pengecualian file dari defragmentasi
File sementara, arsip, dan file multimedia biasanya tidak memengaruhi kinerja sistem dan oleh karena itu harus dikecualikan dari defragmentasi untuk mempersingkat waktu pemrosesan disk.
Cara termudah untuk melakukannya adalah dengan mengatur pengecualian menggunakan dialog pengaturan antarmuka grafis, lalu menggunakan setenv untuk mengatur lingkungan baris perintah sesuai dengan preferensi pengguna, seperti yang ditunjukkan pada contoh di atas.
Alternatifnya, Anda dapat mengatur pengecualian menggunakan UD_EX_FILTER variabel lingkungan. Periksa skrip berikut untuk mempelajari caranya. Skrip ini juga mengecualikan fragmen besar karena biasanya tidak memengaruhi kinerja sistem.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @echo off :: :: This script excludes temporary files, archives, :: multimedia files and big fragments from defragmentation :: and then defragments all the available non-removable disks. :: :: exclude temporary files set UD_EX_FILTER=*system volume information*;*temp*;*tmp*;*recycle* set UD_EX_FILTER=%UD_EX_FILTER%;*dllcache*;*ServicePackFiles*;*.log set UD_EX_FILTER=%UD_EX_FILTER%;*Windows.old* :: exclude archives set ARCHIVE_PATTERNS=*.7z;*.7z.*;*.arj;*.bkf;*.bz2;*.bzip2;*.cab;*.cpio;*.deb set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.dmg;*.gz;*.gzip;*.lha;*.lzh;*.lzma set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.rar;*.rpm;*.swm;*.tar;*.taz;*.tbz set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.tbz2;*.tgz;*.tpz;*.txz;*.xar;*.xz set ARCHIVE_PATTERNS=%ARCHIVE_PATTERNS%;*.z;*.zip set UD_EX_FILTER=%UD_EX_FILTER%;%ARCHIVE_PATTERNS% :: exclude multimedia files set AUDIO_PATTERNS=*.aif;*.cda;*.flac;*.iff;*.kpl;*.m3u;*.m4a;*.mid set AUDIO_PATTERNS=%AUDIO_PATTERNS%;*.mp3;*.mpa;*.ra;*.wav;*.wma set VIDEO_PATTERNS=*.3g2;*.3gp;*.asf;*.asx;*.avi;*.flv;*.mov;*.mp4 set VIDEO_PATTERNS=%VIDEO_PATTERNS%;*.mpg;*.rm;*.srt;*.swf;*.vob;*.wmv set UD_EX_FILTER=%UD_EX_FILTER%;%AUDIO_PATTERNS%;%VIDEO_PATTERNS% :: exclude big fragments set UD_FRAGMENT_SIZE_THRESHOLD=20MB :: defragment all the available non-removable disks udefrag --all-fixed |
Pengecualian disk dari defragmentasi
Jika Anda ingin mengecualikan disk tertentu dari defragmentasi, Anda dapat dengan mudah melakukannya menggunakan UD_EX_FILTER variabel lingkungan:
1 2 3 4 5 6 7 8 9 10 11 | @echo off :: :: This script defragments all the available :: non-removable disks except the disk C: :: call "%UD_INSTALL_DIR%\setenv.cmd" set UD_EX_FILTER=%UD_EX_FILTER%;C:\* udefrag --all-fixed |
Anda juga dapat dengan mudah mengecualikan disk yang memiliki tingkat fragmentasi tertentu:
1 2 3 4 5 6 7 8 9 10 11 12 | @echo off :: :: This script performs the full optimization :: of all the available non-removable disks :: having fragmentation level above 20%. :: call "%UD_INSTALL_DIR%\setenv.cmd" set UD_FRAGMENTATION_THRESHOLD=20 udefrag -o --all-fixed |
Defragmentasi disk yang belum memiliki huruf drive yang ditetapkan
sistem diskpart untuk menetapkan huruf drive sementara.
Periksa skrip berikut untuk mempelajari cara melakukannya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | @echo off :: :: This script defragments a disk with no drive :: letter assigned, mounted to C:\Games. :: set MOUNT_POINT=C:\Games :: set the UltraDefrag specific environment :: variables according to the user preferences call "%UD_INSTALL_DIR%\setenv.cmd" :: assign a drive letter to the disk echo Preparing to assign a drive letter to the disk mounted at %MOUNT_POINT%... echo. echo select volume=%MOUNT_POINT% > diskpart.script echo assign letter=t >> diskpart.script diskpart /s diskpart.script || goto fail echo. :: give the diskpart utility 15 seconds to finish its job timeout /t 15 /nobreak > nul :: defragment the disk echo Preparing to defragment the disk... echo. udefrag t: || set DEFRAG_FAILED=1 echo. :: remove the assigned letter echo Preparing to remove the assigned drive letter... echo. echo select volume=%MOUNT_POINT% > diskpart.script echo remove letter=t >> diskpart.script diskpart /s diskpart.script :: give the diskpart utility 15 seconds to finish its job timeout /t 15 /nobreak > nul if "%DEFRAG_FAILED%" equ "1" goto fail :success del /q diskpart.script call "%UD_INSTALL_DIR%\clearenv.cmd" set MOUNT_POINT= set DEFRAG_FAILED= exit /B 0 :fail del /q diskpart.script call "%UD_INSTALL_DIR%\clearenv.cmd" set MOUNT_POINT= set DEFRAG_FAILED= exit /B 1 |