在 cleanmgr 对话框中按“确定”

在 cleanmgr 对话框中按“确定”

我正在尝试使用批处理文件进行磁盘清理,无需任何用户交互,但遇到了这个问题。

运行后cleanmgr.exe /verylowdisk /d c,会出现一个对话框窗口,我目前必须手动按下“确定”按钮才能继续执行批处理文件中的下一个命令。
有没有办法在对话框弹出后自动按下按钮?
由于对话框是其中的一部分cleanmgr,并且在我单击“确定”按钮之前不会终止,因此我无法调用另一个函数来按下按钮。

答案1

磁盘清理 (cleanmgr.exe) 有一组记录不全的命令行开关,第三方在这里写得很好。您可能需要/SAGESET/SAGERUN开关。

首先,运行以下命令具有提升的权限(行政):

cleanmgr.exe /SAGESET:n

(其中n是您选择的 0-9999 之间的任意数字——请参阅末尾的注释 1)。这将打开一个类似于磁盘清理的标准“清理系统文件”对话框的对话框。设置您想要的选项,然后单击“确定”。您的设置将保存在以下注册表文件夹中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches

然后,您可以导出该密钥(如果需要,可以在其他机器上使用)并将其导入到您想要运行的机器上;有关更多详细信息,请参阅最后的注释 2。

现在,一旦你的系统保存了这些设置,你就可以通过调用这些预设来执行磁盘清理

cleanmgr.exe /SAGERUN:n

哪里n是您在开关中使用的相同数字/SAGESET。这将自动使用预设设置运行磁盘清理,并在运行完成后关闭。

笔记

  1. 我链接的网站说的是0-65535,这篇 Microsoft TechNet 文章此 Microsoft 支持页面但是,在我测试的系统上,高于 9999 的值会截断最低有效数字,并且在我的测试中65500确实被覆盖了。6550

  2. 如果您需要以编程方式重新创建注册表项,请查看VolumeCachesfor中的每个子项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 值即使它们是零,因为省略一个键可能会导致未定义且可能是不良的行为。

相关内容