Ejemplos de secuencias de comandos por lotes
Última actualización el
Consulte los siguientes ejemplos de secuencias de comandos por lotes para aprender cómo automatizar completamente las tareas típicas de desfragmentación utilizando UltraDefrag CLI.
Script personalizado predeterminado para la desfragmentación automática
UltraDefrag utiliza el siguiente script personalizado para la desfragmentación automática de forma predeterminada:
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 |
Comprobando todos los discos disponibles en busca de errores
Si los discos que desea desfragmentar no han sido revisados en busca de errores durante mucho tiempo, es una buena idea verificarlos todos usando la chkdsk antes de realizar la desfragmentación.
No dude en utilizar el siguiente script para automatizar completamente el proceso:
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 |
Desfragmentación completa de todos los discos disponibles.
Puede resultar tedioso comprobar manualmente si tiene algunos archivos fragmentados bloqueados en sus discos o no y realizar la desfragmentación durante el arranque en caso de que estén presentes.
Puede utilizar el siguiente script para automatizar completamente el proceso. Además, el script realiza una desfragmentación periódica de los discos y optimiza las tablas de archivos maestros en caso de que necesiten optimización:
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 |
Optimización de todos los discos disponibles.
Si va a optimizar sus discos utilizando el script de tiempo de arranque personalizado, considere configurar laUD_SSD_DEFRAGMENT_AND_TRIM_ONLY variable de entorno antes de la optimización de los discos, especialmente si tiene unidades de estado sólido (SSD) instaladas en su sistema. Esta opción acorta enormemente el tiempo de optimización de SSD sin pérdida de eficiencia de optimización. También prolonga la vida útil del 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 |
Exclusión de archivos de la desfragmentación
Los archivos temporales, archivos comprimidos y multimedia generalmente no afectan el rendimiento del sistema y, por lo tanto, deben excluirse de la desfragmentación para acortar el tiempo de procesamiento del disco.
La forma más fácil de hacerlo es establecer las exclusiones utilizando el cuadro de diálogo Configuración de la interfaz gráfica y luego usar el setenv para establecer el entorno de línea de comando de acuerdo con las preferencias del usuario, como se muestra en los ejemplos anteriores.
Alternativamente, puede establecer las exclusiones utilizando laUD_EX_FILTER variable de entorno. Consulte el siguiente script para aprender cómo hacerlo. Además, el script excluye fragmentos grandes, ya que normalmente tampoco afectan el rendimiento del sistema.
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 |
Exclusión de discos de la desfragmentación.
Si desea excluir ciertos discos de la desfragmentación, puede hacerlo fácilmente usando laUD_EX_FILTER variable de entorno:
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 |
También puedes excluir fácilmente discos que tengan cierto nivel de fragmentación:
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 |
Desfragmentación de discos que no tienen letras de unidad asignadas
Si desea desfragmentar discos que no tienen letras de unidad asignadas, puede utilizar la diskpart para asignar letras de unidad temporalmente.
Consulte el siguiente script para aprender cómo hacerlo:
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 |