Exemples de scripts batch
Dernière mise à jour le
Consultez les exemples de scripts batch suivants pour savoir comment automatiser entièrement les tâches de défragmentation classiques à l'aide de la CLI UltraDefrag .
Script personnalisé par défaut pour la défragmentation automatique
UltraDefrag utilise par défaut le script personnalisé suivant pour la défragmentation automatique :
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 | @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 |
Vérification des erreurs sur tous les disques disponibles
Si les disques que vous souhaitez défragmenter n'ont pas été vérifiés pour les erreurs depuis longtemps, c'est une bonne idée de tous les vérifier à l'aide de l'utilitaire système chkdsk avant d'effectuer la défragmentation.
N'hésitez pas à utiliser le script suivant pour automatiser entièrement le processus :
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 |
Défragmentation complète de tous les disques disponibles
Il peut être fastidieux de vérifier manuellement si vous avez ou non des fichiers fragmentés verrouillés sur vos disques et d'effectuer la défragmentation au démarrage au cas où ils seraient présents.
Vous pouvez utiliser le script suivant pour automatiser entièrement le processus. De plus, le script effectue une défragmentation régulière des disques et optimise les tables des fichiers maîtres au cas où elles auraient besoin d'être optimisées :
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 |
Optimisation de tous les disques disponibles
Si vous envisagez d'optimiser vos disques à l'aide du script de démarrage personnalisé, envisagez de définir laUD_SSD_DEFRAGMENT_AND_TRIM_ONLY
variable d'environnement avant l'optimisation des disques, surtout si des disques SSD (Solid State Drives) sont installés sur votre système. Cette option réduit considérablement le temps d'optimisation du SSD sans aucune perte d'efficacité d'optimisation. Cela prolonge également la durée de vie du SSD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @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. :: :: 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 |
Exclusion de fichiers de la défragmentation
Les fichiers temporaires, les archives et les fichiers multimédia n'affectent généralement pas les performances du système et doivent donc être exclus de la défragmentation afin de réduire le temps de traitement du disque.
La façon la plus simple de le faire est de définir les exclusions à l'aide de la boîte de dialogue Paramètres de l'interface graphique, puis d'utiliser la setenv pour définir l'environnement de ligne de commande en fonction des préférences de l'utilisateur, comme indiqué dans les exemples ci-dessus.
Vous pouvez également définir les exclusions à l'aide de laUD_EX_FILTER
variable d'environnement. Consultez le script suivant pour savoir comment procéder. De plus, le script exclut les gros fragments car ils n'affectent généralement pas non plus les performances du système.
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 |
Exclusion des disques de la défragmentation
Si vous souhaitez exclure certains disques de la défragmentation, vous pouvez facilement le faire en utilisant laUD_EX_FILTER
variable d'environnement :
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 |
Vous pouvez également facilement exclure les disques ayant un certain niveau de fragmentation :
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 |
Défragmentation des disques n'ayant aucune lettre de lecteur attribuée
Si vous souhaitez défragmenter des disques auxquels aucune lettre de lecteur n'est attribuée, vous pouvez utiliser l'utilitaire système diskpart pour attribuer temporairement des lettres de lecteur.
Consultez le script suivant pour savoir comment procéder :
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 |