我正在尝试为 Windows XP 安装程序设置一个自动化脚本。这是一个在安装后首次启动时运行的批处理脚本,我试图完成的任务之一是将页面文件从 C: 中完全删除,并将 16-768 MB 的页面文件放在 D: 中。
这是我的批处理文件说明:
echo === Creating new page file on D: ...
cscript %windir%\system32\pagefileconfig.vbs /create /i 16 /m 768 /vo d: >nul
echo.
echo === Removing old page file from C: ...
cscript %windir%\system32\pagefileconfig.vbs /delete /vo C:
attrib -s -h c:\pagefile.sys
del c:\pagefile.sys
我的问题是,虽然这些都是合理的命令,但删除 C: 上的页面文件需要我重新启动才能使这些命令成功。b 或者,换句话说 — 我必须先创建 D: 页面文件,然后重新启动并删除 c:\pagefile.sys 文件,否则我只能使用 c:\pagefile.sys 文件,而 Windows 本身甚至无法识别该文件(它只会说 D: 上有一个页面文件,而 C: 根本没有页面文件)。显然是因为已经有一些页面写入了 C:\pagefile.sys 文件。
那么我该如何一次性完成这个任务呢?或者,如果这是“可批量编写脚本的”,那么可以分两次完成 :)
TIA,丹尼尔:)
编辑:我可能应该澄清一下:运行上述命令都是有效的,但只有在下次启动时重新运行“attrib”和“del”命令时,它们才会完全成功。C: 页面文件当时正在使用中,因此我无法删除它使用的文件,当我将 Windows 配置为不使用 C: 作为页面文件驱动器时,Windows 本身不会删除它。相反,它会留下一个孤立的 c:\pagefile.sys 文件(它非常大)。
我不一定需要一次性完成这个工作,注册最后两个命令在重启后运行也很好:)
编辑 2:由于似乎不可能一次性完成,我基本上只是先按照上面所述进行页面文件配置,然后将另一个批处理文件放入“%userprofile%\Start Menu\Programs\Startup”,在第一次登录时从 C: 中删除孤立文件。这不是最漂亮的解决方案,但它有效 :)
答案1
我的问题是,虽然这些都是合理的命令,但删除 C: 上的页面文件需要我重新启动才能使这些命令成功完成。
当然可以扩张在 Windows 运行时,您可以修改页面文件(增加其大小或将页面文件添加到新卷),但您无法减少它(减小其尺寸或者将其移除)。
或者换句话说 — 我必须先创建 D: 页面文件,然后重新启动并删除 c:\pagefile.sys 文件
您可以同时执行这些操作,这样只需重新启动一次。
我被困在 ac:\pagefile.sys 文件中,Windows 本身甚至无法识别它(它只会说 D: 上有一个页面文件,而 C: 根本没有页面文件)。显然是因为已经有一些页面被写入 C:\pagefile.sys 文件。
运行上述命令都是有效的,但只有在下次启动时重新运行“attrib”和“del”命令,它们才会完全成功。C: 页面文件当时正在使用中,因此我无法删除它使用的文件,当我将 Windows 配置为不使用 C: 作为页面文件驱动器时,Windows 本身不会删除它。相反,它会留下一个孤立的 c:\pagefile.sys 文件(它非常大)。
正确。Windows 已确认您的更改,但在您重新启动之前,页面文件仍在使用中,并且它对此无能为力。
由于似乎不可能一次性完成,我基本上只是先按照上面所述进行页面文件配置,然后将另一个批处理文件放入“%userprofile%\Start Menu\Programs\Startup”,在第一次登录时从 C: 中删除孤立文件。这不是最漂亮的解决方案,但它有效 :)
或者,你可以使用类似稍后移动在您的批处理文件中,以便系统在重启时自动完成它。
请注意,这与从启动文件夹,甚至跑步注册表项;这些程序将要移动/重命名/删除的文件/文件夹写入其中,并PendingFileRenameOperations
在启动过程的早期进行处理(技术上甚至在 Windows 运行之前),因此它们甚至可以用于删除 Windows 启动并运行后无法删除的系统文件。
这很方便,因为有时 Windows 会将某些文件和文件夹检测为“特殊”,即使配置为不使用它们,它仍会锁定它们,阻止您在启动时删除它们。通过安排在 Windows 运行之前删除它,您可以删除文件/文件夹,这样 Windows 就看不到它们了。