12 12
发新话题
打印

[3]让你的Ghost XP更加自动化---dllcache的重建

[3]让你的Ghost XP更加自动化---dllcache的重建

[这个贴子最后由benjaminwan在 2004/05/30 06:41pm 第 1 次编辑]
引用:
下面引用由金雕2004/05/30 02:44pm 发表的内容:
请问您的这个是不想jujumao的那样完美解决了多处理器的问题?
关于“完美”:我只能说我的方法并不完美,除非你不在乎那40M的空间。
关于“完美+多处理器”:由于PE的检测过程和全新安装的XP是一样的,全新XP装出来是什么样的,PE检测出来就是什么样的,所以不管是AMD还是Intel,不管是几年前红极一时的双CeleronA、双毒龙、还是现在的双Athlon MP、双Xeon、超线程甚至未来的双处理器,我想只要我的批处理没有出错,都不会有问题。
至于别人的方法,我没有试过也没有多处理器,所以也无从评价。
由于制作一个这样的Mini PE在方法上很简单,我也就没有多说,只当一个附属品发布,但是如果有错误,我还是会即时更正的。
引用:
下面引用由je462004/05/30 04:08pm 发表的内容:
为何操作系统的初步安装也会出现检测错误的问题,还得人为修正?
是我的批处理脚本中的几处文件名写错了,你误解了我的话

TOP

[3]让你的Ghost XP更加自动化---dllcache的重建

@echo off
关闭回显
dir %systemroot%\system32\dllcache /a /b >files.txt
先把dllcache内的文件列表存在files.txt
sfc /purgecache
清除dllcache
echo @echo on >fdir.cmd
把@echo on这句存入fdir.cmd
执行fdir.cmd时首先将会开启回显
for /f %%I in (files.txt) do echo dir c:\%%I /a /b /s ^>^>%systemroot%\fdir.txt >>fdir.cmd
for /f %%I in (files.txt)  意思是 把files.txt每一行的文件名读入变量i,一次读入一行。
dir c:\%%I /a /b /s  意思 是在整个C:上查找变量i所存的文件名
^>^>  意思是 执行时把"^>^>"当作普通字符">>"来处理
实际整句执行时,这一句会把files.txt里每一行转化成,dir c:\每行内容 /a /b /s>>fdir.txt,并存在fdir.cmd(这一步由于不能用echo off
模式,所以执行速度很低)
例如files.txt第一行为abc.dll,第二行为cde.dll
那么将转化为
dir c:\abc.dll /a /b /s>>fdir.txt
dir c:\cde.dll /a /b /s>>fdir.txt
这句的意思是在整个C:上用dir查找cde.dll
然后把找到的文件完整路径写入fdir.txt(这步将花掉很多时间,毕竟是在成千上万个文件中查找一个文件)
call fdir.cmd
调用fdir.cmd
del fdir.cmd
del files.txt
删除临时文件
set fdir=%systemroot%\fdir.txt
设置变量fdir为%systemroot%\fdir.txt
for /f "usebackq" %%J in (%fdir%) do copy %%J %systemroot%\system32\dllcache\ >nul
读取fdir.txt中每一行(上面的命令所得到的文件完整路径),执行复制命令
del %fdir%
删除%systemroot%\fdir.txt
-------------------------------------------------------------------------------------
以上所有命令的详细帮助就在2000的帮助和支持中心。
想知道所有命令的详细使用方法,在帮助和支持中心中以"命令行参考"为关键字查找,即可找到"命令行参考 A-Z"
-------------------------------------------------------------------------------------
可惜的是,这个方法对dllcache的文件改名复制机制仍然无效。
撇开执行效率低不谈,如果出现C:中其他不相关文件夹里有一个文件,本不该和dllcache内的文件重名,却重名了,当这个文件被最后复制时
,将被错误的复制到dllcache里,替代正确的文件。
这是一种欠缺深思熟虑的做法,很抱歉,这种做法我无法认同。

TOP

 12 12
发新话题