zoukankan      html  css  js  c++  java
  • 一个自动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;


  • 相关阅读:
    双色球相关
    儿童教学相关网站
    [转]javascript实现限制上传文件的大​​小
    使用存储过程 修改符合条件的数据表的相关字段 的数据类型
    [转]bat批处理实现TXT文本合并
    [转]在SQL中用正则表达式替换html标签
    [转]T4模版引擎之生成数据库实体类
    [转]C#中图片.BYTE[]和base64string的转换
    [书目20131114]微软技术丛书•快速软件开发(珍藏版) Rapid Development Taming Wild Software Schedules By Steve McConnell
    人体穴位
  • 原文地址:https://www.cnblogs.com/ma6174/p/2335296.html
Copyright © 2011-2022 走看看