Я пытаюсь выполнить очистку диска с помощью командного файла без какого-либо взаимодействия с пользователем и сталкиваюсь с этой проблемой.

После запуска cleanmgr.exe /verylowdisk /d c появляется диалоговое окно, в котором мне нужно вручную нажать кнопку ОК, чтобы перейти к следующей команде в командном файле.
Есть ли способ автоматически нажать кнопку после появления диалогового окна?
Поскольку диалоговое окно является частью cleanmgr и не завершится, пока я не нажму кнопку OK, я не могу вызвать другую функцию, чтобы нажать кнопку.

1 ответ1

0

Очистка диска (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 с предустановленными настройками автоматически, и он закроется после завершения работы.

Заметки

  1. На сайте, на который я ссылаюсь, указано 0-65535, как и в этой статье Microsoft TechNet и на этой странице поддержки Microsoft, но в системе, которую я тестировал, значения выше 9999 усекали наименее значащую цифру, а 65500 действительно переписали 6550 в моих тестах.

  2. Если вам нужно программно воссоздать ключи реестра, просмотрите каждый подраздел в 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, даже если они равны нулю, так как пропуск ключа может привести к неопределенному и, возможно, нежелательному поведению.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .