我正在尝试使用批处理文件进行磁盘清理,无需任何用户交互,但遇到了这个问题。
运行后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
。这将自动使用预设设置运行磁盘清理,并在运行完成后关闭。
笔记
我链接的网站说的是0-65535,这篇 Microsoft TechNet 文章和此 Microsoft 支持页面但是,在我测试的系统上,高于 9999 的值会截断最低有效数字,并且在我的测试中
65500
确实被覆盖了。6550
如果您需要以编程方式重新创建注册表项,请查看
VolumeCaches
for中的每个子项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 值即使它们是零,因为省略一个键可能会导致未定义且可能是不良的行为。