中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 21:02
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » [转贴]reg文件转换成bat文件 查看 1,132 回复 6
楼 主 [转贴]reg文件转换成bat文件 发表于 2008-01-14 16:46 ·  中国 河南 新乡 联通
初级用户
★★
积分 139
发帖 63
注册 2007-10-20 15:06
18年会员
UID 100261
性别 男
状态 离线
经常用到一些.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, 下载次数: 108)
2 发表于 2008-01-19 19:32 ·  中国 广东 汕头 潮阳区 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
3 发表于 2008-01-20 10:56 ·  中国 广东 深圳 龙岗区 电信
初级用户
★★
积分 136
发帖 73
注册 2007-04-02 05:47
19年会员
UID 83685
性别 男
状态 离线
樓主辛苦了.謝謝提供!
4 发表于 2008-01-20 11:58 ·  中国 天津 联通
新手上路
积分 2
发帖 1
注册 2008-01-20 11:02
18年会员
UID 109061
性别 男
状态 离线
1111111111111111111111111111111111111111111111111111111111111111
5 发表于 2008-01-23 00:29 ·  中国 湖南 株洲 电信
新手上路
积分 4
发帖 5
注册 2007-12-21 21:04
18年会员
UID 106403
性别 男
状态 离线
reg文件是注册表文件,双击后即可执行,没有必要再把它转成BAT文件,如需合并reg文件,只要用记事本打开全部剪切到一起即可
6 发表于 2008-01-27 19:49 ·  中国 广东 珠海 电信
新手上路
积分 10
发帖 5
注册 2008-01-25 21:49
18年会员
UID 109550
性别 男
状态 离线
谢谢分享!!
7 regedit /s 注册表文件.reg 合并时不要"确定" 发表于 2008-01-28 22:53 ·  中国 湖北 武汉 硚口区 电信
初级用户
积分 26
发帖 11
注册 2008-01-27 20:10
18年会员
UID 109672
性别 男
状态 离线
regedit /s 注册表文件.reg 合并时不要"确定"
论坛跳转: