Я пытаюсь выполнить очистку диска с помощью командного файла без какого-либо взаимодействия с пользователем и сталкиваюсь с этой проблемой.
После запуска cleanmgr.exe /verylowdisk /d c
появляется диалоговое окно, в котором мне нужно вручную нажать кнопку ОК, чтобы перейти к следующей команде в командном файле.
Есть ли способ автоматически нажать кнопку после появления диалогового окна?
Поскольку диалоговое окно является частью cleanmgr
и не завершится, пока я не нажму кнопку OK, я не могу вызвать другую функцию, чтобы нажать кнопку.
1 ответ
Очистка диска (cleanmgr.exe) содержит набор плохо документированных ключей командной строки, которые здесь неплохо написаны третьей стороной. Скорее всего, вам нужны /SAGESET
и /SAGERUN
.
Сначала выполните следующую команду с повышенными привилегиями (admin):
cleanmgr.exe /SAGESET:n
(где n
- любое произвольное число из 0-9999 по вашему выбору - см. примечание 1 в конце). Откроется диалоговое окно, похожее на стандартное диалоговое окно "Очистка системных файлов" в разделе "Очистка диска". Установите нужные параметры и нажмите ОК. Ваши настройки будут сохранены в следующей папке реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches
Затем вы можете экспортировать этот ключ (при необходимости, для использования на других машинах) и импортировать его на машину, которую вы хотите запустить; см. примечание 2 в конце для более подробной информации.
Теперь, когда у вас есть система, в которой сохранены эти настройки, вы можете выполнить очистку диска с помощью этих настроек, вызвав
cleanmgr.exe /SAGERUN:n
Где n
- это тот же номер, который вы использовали с /SAGESET
. Это должно запустить Disk Cleanup с предустановленными настройками автоматически, и он закроется после завершения работы.
Заметки
На сайте, на который я ссылаюсь, указано 0-65535, как и в этой статье Microsoft TechNet и на этой странице поддержки Microsoft, но в системе, которую я тестировал, значения выше 9999 усекали наименее значащую цифру, а
65500
действительно переписали6550
в моих тестах.Если вам нужно программно воссоздать ключи реестра, просмотрите каждый подраздел в
VolumeCaches
дляStateFlagsNNNN
(гдеNNNN
- ваше значениеn
, дополненное нулями до четырех цифр). Затем вы можете воссоздать ключи с помощью такой команды, какreg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Setup Log Files" /v "StateFlags6550" /t REG_DWORD /d 2 /f
Это требует повышенных привилегий, конечно. Обязательно включите все значения StateFlagsNNNN, даже если они равны нулю, так как пропуск ключа может привести к неопределенному и, возможно, нежелательному поведению.