バッチスクリプトの例

2025年3月25日に最後に更新されました

UltraDefrag CLI を使用して一般的なデフラグ タスクを完全に自動化する方法については、次のバッチ スクリプトの例を確認してください。

自動デフラグのためのデフォルトのカスタム スクリプト

UltraDefrag デフォルトで自動デフラグに次のカスタム スクリプトを使用します。

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

使用可能なすべてのディスクのエラーをチェックしています

デフラグするディスクのエラーを長期間チェックしていない場合は、デフラグを実行する前に、システムchkdskユーティリティを使用してすべてのディスクをチェックすることをお勧めします。

プロセスを完全に自動化するには、次のスクリプトを自由に使用してください。

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

使用可能なすべてのディスクの完全なデフラグ

ディスク上にロックされた断片化ファイルが存在するかどうかを手動で確認し、存在する場合には起動時にデフラグを実行するのは面倒な場合があります。

次のスクリプトを使用すると、プロセスを完全に自動化できます。さらに、スクリプトはディスクの定期的なデフラグを実行し、最適化が必要な場合にはマスター ファイル テーブルを最適化します。

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

利用可能なすべてのディスクの最適化

カスタム起動時スクリプトを使用してディスクを最適化する場合、UD_SSD_DEFRAGMENT_AND_TRIM_ONLY特にシステムにソリッド ステート ドライブ (SSD) が取り付けられている場合は、ディスクの最適化の前に環境変数を設定することを検討してください。このオプションは、最適化効率を損なうことなく、SSD の最適化時間を大幅に短縮します。また、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

ファイルをデフラグから除外する

一時ファイル、アーカイブ、およびマルチメディア ファイルは通常、システムのパフォーマンスに影響を与えないため、ディスクの処理時間を短縮するためにデフラグから除外する必要があります。

グラフィカルインターフェイスの設定ダイアログを使用して除外を設定し上記の例に示すように、ユーザー設定に従ってコマンドライン環境を設定するためにsetENV

あるいは、環境変数を使用して除外を設定することもできますUD_EX_FILTER。その方法については、次のスクリプトを確認してください。また、通常はシステムのパフォーマンスにも影響を与えないため、スクリプトでは大きなフラグメントが除外されます。

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

デフラグからのディスクの除外

特定のディスクをデフラグから除外したい場合は、環境変数を使用して簡単に実行できますUD_EX_FILTER

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

また、特定の断片化レベルを持つディスクを簡単に除外することもできます。

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

ドライブ文字が割り当てられていないディスクのデフラグ

ドライブ文字が割り当てられていないディスクを最適化する場合は、システムのdiskpartユーティリティを使用して、ドライブ文字を一時的に割り当てることができます。

その方法については、次のスクリプトを確認してください。

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
このページをシェアする:
トップにスクロールします 英語