中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 22:25
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS学习入门 & 精彩文章 (教学室) » [转贴]reg文件转换成bat文件
可打印版本  1,216 / 6
第1楼 kida 发表于 2008-01-14 16:46
初级用户 发帖 63 积分 139
[转贴]reg文件转换成bat文件
经常用到一些.reg文件,觉得合并时老是要确定有点麻烦,于是写了个可以把.reg文件转换成同样效果的C 程序

转换后如果出现乱码,那是因为编码的问题,只需把需要转换的.reg文件的内容复制到一个新件的文本文件再转换即可


#include "stdio.h"
#include "stdlib.h"
void main()
{
char oriname[40],tarname[40];
char ch,ah;
FILE *fp1,*fp2;
while(1)
{ clrscr();
printf("The filename is not more than 8 characters \n\n");
printf("Original file(*.reg): ");
scanf("%s",oriname);
if((fp1=fopen(oriname,"r"))==NULL)
{ clrscr();
printf("Can not find the special file, try again?[Y/N] [ ]\b\b");
do
{
ch=getche();
if(ch!='y'||ch!='Y'||ch!='n'||ch!='N')
{ clrscr();
printf("Can not find the special file, try again?[Y/N] [ ]\b\b");
}
}while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') ;
if(ch=='y' || ch=='Y')
continue;
else
return;
}
else break;

}
printf("\nTarget file (*.bat): ");
scanf("%s",tarname);
if((fp2=fopen(tarname,"w"))==NULL)
{printf("Can not create the file!!\n");
getch();
return;
}

while(!feof(fp1))
{ ah=fgetc(fp1);
if(ah==10||ah==' ')
continue;
else
break;
}
fprintf(fp2,"@echo off");
fputc(10,fp2);
fprintf(fp2,"echo ");
if(ah=='>'||ah=='^'||ah=='<'||ah=='&'||ah=='|'||ah=='%')
{ if(ah=='>')
{ fputc('^',fp2);
fputc('>',fp2);
}
if(ah=='<')
{ fputc('^',fp2);
fputc('<',fp2);
}
if(ah=='^')
{ fputc('^',fp2);
fputc('^',fp2);
}
if(ah=='&')
{ fputc('^',fp2);
fputc('&',fp2);
}
if(ah=='|')
{ fputc('^',fp2);
fputc('|',fp2);
}
if(ah=='%')
{ fputc('%',fp2);
fputc('%',fp2);
}
}
else
{ if(ah=='')
fprintf(fp2,">>#@$5e8.reg");
else
fputc(ah,fp2);
}
while(!feof(fp1))
{ ah=fgetc(fp1);


if(ah==10)
{
{fprintf(fp2,">>#@$5e8.reg");
fputc(ah,fp2);
}
while(!feof(fp1))
{ ah=fgetc(fp1);
if(ah==10||ah==' ')
continue;
else
break;
}
if(ah=='')
break;
fprintf(fp2,"echo ");
}
if(ah=='>'||ah=='^'||ah=='<'||ah=='&'||ah=='|'||ah=='%')
{ if(ah=='>')
{ fputc('^',fp2);
fputc('>',fp2);
}
if(ah=='<')
{ fputc('^',fp2);
fputc('<',fp2);
}
if(ah=='^')
{ fputc('^',fp2);
fputc('^',fp2);
}
if(ah=='&')
{ fputc('^',fp2);
fputc('&',fp2);
}
if(ah=='|')
{ fputc('^',fp2);
fputc('|',fp2);
}
if(ah=='%')
{ fputc('%',fp2);
fputc('%',fp2);
}
}
else
{ if(ah=='')
fprintf(fp2,">>#@$5e8.reg");
else
fputc(ah,fp2);
}
}
fprintf(fp2,"regedit /s #@$5e8.reg");
fputc(10,fp2);
fprintf(fp2,"del #@$5e8.reg");
fclose(fp1);
fclose(fp2);
}

附件
reg2bat.rar (8.8 KiB)
第2楼 haiou327 发表于 2008-01-19 19:32
高级用户 发帖 348 积分 713
我用REG2CMD
第3楼 liumingqing 发表于 2008-01-20 10:56
初级用户 发帖 73 积分 136
樓主辛苦了.謝謝提供!
第4楼 tjstktjstk 发表于 2008-01-20 11:58
新手上路 发帖 1 积分 2
1111111111111111111111111111111111111111111111111111111111111111
第5楼 japcheng 发表于 2008-01-23 00:29
新手上路 发帖 5 积分 4
reg文件是注册表文件,双击后即可执行,没有必要再把它转成BAT文件,如需合并reg文件,只要用记事本打开全部剪切到一起即可
第6楼 zac2008 发表于 2008-01-27 19:49
新手上路 发帖 5 积分 10
谢谢分享!!
第7楼 Rulition 发表于 2008-01-28 22:53
初级用户 发帖 11 积分 26
regedit /s 注册表文件.reg 合并时不要"确定"
regedit /s 注册表文件.reg 合并时不要"确定"
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023