比较经典的网吧XP系统服务优化批处理,学习批处理操作系统服务
本文有点长,请耐心点查看。
把已知注册表文件用批处理方式显示并导入。批处理单文件模式生成并导入注册表文件。
关注天下网吧批处理频道的应该都知道,用批处理导入注册表文件非常方便,regedit /s txwb.reg就能导入txwb.reg文件。
但是这个方式有一个问题,就是有单独的txwb.reg文件,这个跟需求的动态生成批处理并导入,单文件模式不符。
需求是指需要一个.bat批处理文件,txwb.reg要动态生成然后导入。
这时候可能大家会想到天下网吧之前说的那个批处理教程,使用reg add命令来导入注册表,比如下面代码就能添加指定的注册表值:
@echo off reg add "HKCR\*\shell\天下网吧命令行" /ve /d 天下网吧命令行 /f reg add "HKCR\*\shell\天下网吧命令行\command" /ve /d "cmd.exe /k cd %%1" /f reg add "HKCR\Folder\shell\天下网吧命令行" /ve /d 天下网吧命令行 /f reg add "HKCR\Folder\shell\天下网吧命令行\command" /ve /d "cmd.exe /k cd %%1" /f
这个方式操作一小段注册表没有问题, 很简单方便,但是如果要操作的注册表项目比较多,是一个现成的注册表文件里面提取出来的,类似下面的注册表文件:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Desktop] "AutoEndTasks"=dword:00000001 "HungAppTimeout"="800" "WaitToKillAppTimeout"="1200" ... 一共200多行的reg文件
那么显然,你用reg add方式来操作,你得一行一行去转换成reg add命令格式。这个工作量就大了,而且容易出错。
所以今天讲的是用(echo命令方式来完成这项工作。
以前天下网吧讲过,使用echo xxx >>文件名方式来动态生成文件,今天也可以用这个方式来动态生成一个注册表文件。
但是今天是进阶版的,使用了()括号命令方式。()号能把一大堆名放到一起执行完后再一起输出,所以很多行数的注册表文件,可以用echo +()方式来输出,比如要动态生成下面的注册表文件:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Desktop] "AutoEndTasks"=dword:00000001 "HungAppTimeout"="800" "WaitToKillAppTimeout"="1200"
@echo off (echo Windows Registry Editor Version 5.00 echo. echo [HKEY_CURRENT_USER\Control Panel\Desktop] echo "AutoEndTasks"=dword:00000001 echo "HungAppTimeout"="800" echo "WaitToKillAppTimeout"="1200")>>"txwb.reg" regedit /s txwb.reg
注意看到()命令,他把所有的echo 先不输出到win.reg文件,括号括起来以后,所有的echo到时一起>>到txwb.reg文件里面,而括号里面就是注册文件的完整文件,这样我们就可以在原有.reg文件每行前面加上echo 就行!最后调用regedit /s txwb.reg完成注册表的导入,如果需要导入后删除临时生成的.reg文件,可以等待regedit /s执行完成后再del txwb.reg文件。这样算比较完美的做法。
执行后生成的txwb.reg文件: