一个自动copy文件到指定目录的小程序

简介:

主要是方便自己的复制文件的。

需求是将两个文件(比如aaaa.in和bbbb.sol)复制到指定目录(D:\data\????\)(????是4个数字,不固定,但是连续的),要求复制过去的两个文件必须改名为data1.in和data1.out,还有就是目标目录是变化的,如前两个文件复制到D:\data\1111\文件夹,那么下两个就要复制到D:\data\1112\,要复制的文件很多,有几百个,还有些干扰文件。手动单个复制太麻烦,就写了这个小程序,减轻自己的劳动量,也为了提高效率,磨刀不误砍材功!

功能特色:

1.将要复制的文件直接拖拽到生成的可执行文件就能运行

2.目录名自动增加,不必手动输入

3.日志记录功能,将所有的复制记录到文件

4.自动识别文件类型

5.错误检测功能 

6.自动更改文件名 

复制代码
#include<stdio.h>
#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<stdio.h>
#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


本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2012/02/02/2335296.html ,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
小程序 前端开发 数据可视化
微信小程序云开发入门教程-全局文件介绍
微信小程序云开发入门教程-全局文件介绍
|
5月前
|
小程序 API
uniapp小程序选择文件并上传到uniCloud
uniapp小程序选择文件并上传到uniCloud
147 0
|
2月前
|
缓存 小程序 API
【社区每周】新增保存文件到系统储存空间API;小程序开发体验问卷调研发布
【社区每周】新增保存文件到系统储存空间API;小程序开发体验问卷调研发布
43 0
|
3月前
|
小程序 JavaScript 前端开发
微信小程序有几个文件
微信小程序通常由多个文件组成,主要包括以下几种类型的文件:
75 1
|
4月前
|
JSON 小程序 前端开发
简单描述下微信小程序的相关文件以及类型?
简单描述下微信小程序的相关文件以及类型?
72 1
|
4月前
|
小程序 JavaScript 前端开发
微信小程序(十九)utils文件的使用
封装一些公共函数文件,这个其实放到哪里都可以,app.js等等 但是,本着专用的原则,我们还是使用小程序为我们提供的公共代码的存放模块utils/utils.js,当然,你还可以在这个目录下边新建其他的文件,但是用法大同小异。 首先要注意一个问题,utils是一个模块。
252 0
|
5月前
|
小程序 JavaScript API
小程序 wxs文件
小程序 wxs文件
124 0
|
6月前
|
JSON 小程序 JavaScript
微信小程序学习第一周的第一篇博客(知识点:了解什么是小程序、各文件的作用和小程序的宿主环境)
微信小程序学习第一周的第一篇博客(知识点:了解什么是小程序、各文件的作用和小程序的宿主环境)
|
6月前
|
人工智能 自然语言处理 小程序
微信小程序打开项目提示读取project.config.json文件失败
微信小程序打开项目提示读取project.config.json文件失败
78 0
|
6月前
|
前端开发 小程序
钉钉小程序 上传一百张图片的base64给接口该怎么写好,正常写的话应该是前端文件限制了长度,只要太大后面一些全部为null
钉钉小程序 上传一百张图片的base64给接口该怎么写好,正常写的话应该是前端文件限制了长度,只要太大后面一些全部为null

热门文章

最新文章