Beispiele für Batch-Skripte

Zuletzt aktualisiert am 25. März 2025

Sehen Sie sich die folgenden Batch-Skriptbeispiele an, um zu erfahren, wie Sie typische Defragmentierungsaufgaben mithilfe UltraDefrag CLI vollständig automatisieren.

Standardmäßiges benutzerdefiniertes Skript für die automatische Defragmentierung

UltraDefrag verwendet standardmäßig das folgende benutzerdefinierte Skript für die automatische Defragmentierung:

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

Überprüfen Sie alle verfügbaren Datenträger auf Fehler

Wenn die Festplatten, die Sie defragmentieren möchten, längere Zeit nicht auf Fehler überprüft wurden, empfiehlt es sich, sie alle mit dem Systemdienstprogramm chkdsk , bevor Sie die Defragmentierung durchführen.

Fühlen Sie sich frei, das folgende Skript zu verwenden, um den Prozess vollständig zu automatisieren:

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

Vollständige Defragmentierung aller verfügbaren Festplatten

Es kann mühsam sein, manuell zu überprüfen, ob sich auf Ihren Festplatten gesperrte fragmentierte Dateien befinden oder nicht, und die Boot-Defragmentierung durchzuführen, falls diese vorhanden sind.

Sie können das folgende Skript verwenden, um den Prozess vollständig zu automatisieren. Darüber hinaus führt das Skript eine regelmäßige Defragmentierung der Festplatten durch und optimiert die Master-Dateitabellen, falls diese optimiert werden müssen:

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

Optimierung aller verfügbaren Festplatten

Wenn Sie Ihre Festplatten mithilfe des benutzerdefinierten Startzeitskripts optimieren möchten, sollten Sie dieUD_SSD_DEFRAGMENT_AND_TRIM_ONLY Umgebungsvariable vor der Festplattenoptimierung festlegen, insbesondere wenn in Ihrem System Solid-State-Laufwerke (SSD) installiert sind. Diese Option verkürzt die SSD-Optimierungszeit enorm, ohne dass die Optimierungseffizienz verloren geht. Außerdem verlängert es die Lebensdauer von SSDs.

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

Ausschluss von Dateien von der Defragmentierung

Temporäre Dateien, Archive und Multimediadateien haben in der Regel keinen Einfluss auf die Systemleistung und sollten daher von der Defragmentierung ausgeschlossen werden, um die Datenträgerverarbeitungszeit zu verkürzen.

Einstellungsdialogfelds der grafischen Schnittstelle festzulegen setEnV die Befehlszeilenumgebung gemäß den Benutzereinstellungen festzulegen, wie in den obigen Beispielen gezeigt.

Alternativ können Sie die Ausschlüsse mithilfe derUD_EX_FILTER Umgebungsvariablen festlegen. Sehen Sie sich das folgende Skript an, um zu erfahren, wie es geht. Außerdem schließt das Skript große Fragmente aus, da diese normalerweise auch keine Auswirkungen auf die Systemleistung haben.

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

Ausschluss von Festplatten von der Defragmentierung

Wenn Sie bestimmte Festplatten von der Defragmentierung ausschließen möchten, können Sie dies ganz einfach über dieUD_EX_FILTER Umgebungsvariable tun:

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

Außerdem können Sie Festplatten mit einem bestimmten Fragmentierungsgrad einfach ausschließen:

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

Defragmentierung von Festplatten, denen kein Laufwerksbuchstabe zugewiesen ist

Wenn Sie Festplatten defragmentieren möchten, denen keine Laufwerksbuchstaben zugewiesen sind, können Sie das Systemdienstprogramm diskpart , um vorübergehend Laufwerksbuchstaben zuzuweisen.

Sehen Sie sich das folgende Skript an, um zu erfahren, wie es geht:

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
Teile diese Seite:
Nach oben scrollen Englisch