小经验(实现批量创建目录)

由于工作需要很多次都是需要一次性创建很多目录(比如: 001 到 999 个目录),之前用的方法都比较stupid(一个一个的鼠标右键新建文件夹,然后重命名·······)一直想自己写一个程序来解决这种问题,问题是死的,可人是活的,于是,动手干。

我使用的环境是Ubuntu12.04,语言:C ;

程序的源码

#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <errno.h>

int create_dir(int num)
{    
    int i = 1;
    int err = 0;
    char arr[10] = {0};
    char *p = arr;
    int create_folder_fail_max = 0;                  //创建文件夹最大失败次数  
    char array[20] = "/home/chen/ME/";
    char arr_memo[20];
    extern int errno;
    int judge_time = 0;

    strcpy(arr_memo, array);

    for(i = 1; i <= num ;i++)
    {
        p = arr;

        if(i < 100)
	{
	    if(i < 10)
            {
		//printf("%d\n", i);    
		*p = '0';
	        *(++p) = '0';
                sprintf(arr + 2, "%d", i);
		printf("%s,", arr);
	    }

	    else
	    {
		*p = '0';
		sprintf(arr + 1, "%d", i);
	    }
	}

        else
            sprintf(arr, "%d", i);


	strncat(array, arr, 3);                     //利用strcat追加到字符串中
	    
        printf("%s\n", array);


	err = mkdir(array, S_IRWXU | S_IRGRP | S_IROTH);

	strcpy(array, arr_memo);
	judge_time++;

	if((17 == errno) && (-1 == err) && ((create_folder_fail_max++) < 5))
	{
            printf("the folder was exist! remaining time is %d.\n", (5 - create_folder_fail_max));		
            
	    if(create_folder_fail_max == judge_time)
            {
	        printf("the target floder had been created, please check\n");
            }

	    continue;
	}

	else if(0 == err)
        {
            printf("the folder %s was created OK!!!\n", arr);
	}

	else
        {
            printf("error!!!\n");
	    return -1;	    	    
	}

    }

    //printf("%d\n", create_folder_fail_max);
    if(create_folder_fail_max == judge_time)
        printf("ALL target folder had been created, check it\n");

    else    
        printf("ALL folders was created OK!!!\n");
    
    return 0;
}

int main(int argc, char *argv[])
{    
    //char arr[10] = {}
    int num = 0;

    printf("请输入文件夹个数!\n");
    scanf("%d", &num);

    if(-1 == create_dir(num))
    {
	printf("create failed, Please check\n");
    }

    return 0;
}	

其中只是涉及到了mkdir() 这个函数,路径 /home/chen/ME 是自己设置的,由于此程序已经能够实现我所想要实现的基本目标,遂没有在深入进行扩展和优化。

在写这个程序的时候我犯了一个很严重的错误,在mkdir的 路径变量中我一直在路径上加  " ", 如 "array" 造成不管array的变量是什么都只产生 array这个文件夹,在此以我的教训给大家提个醒。

最后 本小程序只是对自己的学习路程进行一个记录,绝无他意, 谢谢!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用insert语句批量插入数据是一种常见的操作。根据个人经验,为了在尽可能短的时间内完成插入大量数据的工作,可以采取以下几个技巧。首先,在进行数据插入之前,特别是在非生产环境中,建议将表的索引和约束去掉。这样可以提高插入数据的速度。然后,可以使用基础的insert语句将一个表中的数据插入另一个表中。例如,将tab2表中的数据插入到tab1表中。根据经验,对于千万级的数据,可以在1小时内完成插入操作。然而,使用这种方法可能会导致大量的归档产生,需要关注归档的产生量,并及时启动备份软件,以避免归档目录过大。另外,还可以使用存储过程来批量插入数据。通过定义一个存储过程,可以在事务内循环插入数据,从而提高插入的效率。例如,可以创建一个存储过程batchInsert,定义一个循环变量i,通过循环插入数据到表中。在插入完成后,需要使用commit语句来提交事务。调用这个存储过程时,可以传入参数来指定需要插入的数据量。例如,调用batchInsert(100000)可以生成10万条数据。这样的批量插入方法可以极大地提高插入数据的效率。123 #### 引用[.reference_title] - *1* *2* [使用insert插入大量数据的总结](https://blog.csdn.net/weixin_33747129/article/details/92748085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [【数据库】实现批量快速插入大量数据的六种方案](https://blog.csdn.net/USTSD/article/details/126863089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值