活用()命令和echo命令动态生成网吧注册表文件并导入批处理

上一篇:

比较经典的网吧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文件:


本文来源:天下网吧 作者:天下网咖

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行