主要是方便自己的复制文件的。
需求是将两个文件(比如aaaa.in和bbbb.sol)复制到指定目录(D:\data\????\)(????是4个数字,不固定,但是连续的),要求复制过去的两个文件必须改名为data1.in和data1.out,还有就是目标目录是变化的,如前两个文件复制到D:\data\1111\文件夹,那么下两个就要复制到D:\data\1112\,要复制的文件很多,有几百个,还有些干扰文件。手动单个复制太麻烦,就写了这个小程序,减轻自己的劳动量,也为了提高效率,磨刀不误砍材功!
功能特色:
1.将要复制的文件直接拖拽到生成的可执行文件就能运行
2.目录名自动增加,不必手动输入
3.日志记录功能,将所有的复制记录到文件
4.自动识别文件类型
5.错误检测功能
6.自动更改文件名
#include< string.h>
#include<stdlib.h>
#include<windows.h>
int main( int argc, char * argv[])
{
if(argc!= 2)//判断输入文件数目,必须是两个文件才能运行
{
printf( " error!!! ");
system( " pause ");
exit( 1);
}
char a[ 10];
// printf("题目序号:");
// gets(a);
//将数字存到文件,实现逐个增加
FILE *in=fopen("d:\\acm\\num.txt","r");
fscanf(in,"%s",a);
fclose(in);
if(strlen(a)!=4)
{
printf("error!!!");
system("pause");
exit(1);
}
char action_in[100]="copy ";
char action_out[100]="copy ";
char destinatine_in[100]=" D:\\data\\1111\\data1.in /-Y";
char destinatine_out[100]=" D:\\data\\1111\\data1.out /-Y";
int len=strlen(argv[1]);
if(argv[1][len-1]=='n'&&argv[1][len-2]=='i')
{
strcat(action_in,argv[1]);
strcat(action_out,argv[2]);
}
else
{
strcat(action_in,argv[2]);
strcat(action_out,argv[1]);
}
for(int i=0;i<4;i++)
{
destinatine_in[9+i]=a[i];
destinatine_out[9+i]=a[i];
}
strcat(action_in,destinatine_in);
strcat(action_out,destinatine_out);
printf("%s\n%s\n",action_in,action_out);
system(action_in);
system(action_out);
FILE *fp=fopen("d:\\acm\\log.txt","a");
fprintf(fp,"%s\n%s\n",action_in,action_out);//写入日志
fclose(fp);
int nn=(a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+(a[3]-'0')+1;//数字加1
FILE *out=fopen("d:\\acm\\num.txt","w");//写入文件
fprintf(out,"%d",nn);
fclose(out);
printf("数据导入成功\n");
Sleep(2000);//延时两秒自动退出
}
2012年2月5日 20:19:34修改程序,增加功能:
1. 对目标文件夹是否非空进行判断,可以选择清空目标文件夹或者清空文件夹再复制
2.为了适应信的加题方式,将题号改为手动输入
#include< string.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
int main( int argc, char * argv[])
{
if(argc!= 3) // 必须是输入和输出文件同时被拖入才能执行
{
printf( " 必须把输入文件和输出文件同时拖到本程序上菜可以运行!! ");
system( " pause ");
exit( 1);
}
char copy_data_in[ 100]= " copy ";
char copy_data_out[ 100]= " copy ";
char destinatine_in[ 100]= " D:\\data\\1111\\data1.in ";
char destinatine_out[ 100]= " D:\\data\\1111\\data1.out ";
char dir[ 100]= " dir D:\\data\\1111\\ /b ";
char del_data[ 100]= " del d:\\data\\1111\\. /q ";
char a[ 10];
printf( " 输入文件夹(题目)序号: ");
gets(a);
// FILE *in=fopen("d:\\acm\\num.txt","r");
// fscanf(in,"%s",a);
// fclose(in);
if(strlen(a)!= 4) // 判断输入是否正确
{
printf( " error!!! ");
system( " pause ");
exit( 1);
}
// 检测文件夹数据是否有内容================================================
for( int i= 0;i< 4;i++)
{
dir[ 12+i]=a[i];
del_data[ 12+i]=a[i];
}
printf( " \n\n ");
printf( " 目录 D:\\data\\%s\\ 下的内容为:\n\n ",a);
system(dir);
printf( " \n\n是否删除原有数据并替换?(y/n) ");
char chiose;
chiose=getche();
printf( " \n ");
if(chiose== ' n '||chiose== ' N ')
{
printf( " 数据未替换\n ");
Sleep( 1500);
exit( 0);
}
// 删除数据==================================================================
system(del_data);
// 复制数据==================================================================
int len=strlen(argv[ 1]);
if(argv[ 1][len- 1]== ' n '&&argv[ 1][len- 2]== ' i ') // 判断文件类型:输入数据
{
strcat(copy_data_in,argv[ 1]);
strcat(copy_data_out,argv[ 2]);
}
else
{
strcat(copy_data_in,argv[ 2]);
strcat(copy_data_out,argv[ 1]);
}
for(i= 0;i< 4;i++)
{
destinatine_in[ 9+i]=a[i];
destinatine_out[ 9+i]=a[i];
}
strcat(copy_data_in,destinatine_in);
strcat(copy_data_out,destinatine_out);
printf( " %s\n%s\n ",copy_data_in,copy_data_out);
system(copy_data_in);
system(copy_data_out);
// 文件复制日志=====================================================================
FILE *fp=fopen( " D:\\OJ题目数据文件复制日志--ma6174.txt ", " a ");
fprintf(fp, " %s\n%s\n ",copy_data_in,copy_data_out);
fclose(fp);
/* int nn=(a[0]-'0')*1000+(a[1]-'0')*100+(a[2]-'0')*10+(a[3]-'0')+1;
FILE *out=fopen("d:\\acm\\num.txt","w");
fprintf(out,"%d",nn);
fclose(out);
*/
printf( " \n数据已经导入\n ");
Sleep( 1500);
return 0;
}
博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/
对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com