一個自動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;


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM