美文网首页
Mac一对一批量修改文件名

Mac一对一批量修改文件名

作者: 对酒当歌的夜 | 来源:发表于2018-08-08 17:24 被阅读45次

需求

批量重命名大家都不陌生,Windows下大把,但是我看了下基本上都批量增加/删除字符,按顺序加1234.....
现在是我们有n个视频名称为xx_vid.mp4,vid不重复,有一张表格一个vid对应一个实际名称(如:vid1,xxx视频名).要求:批量改名把下载的视频名称按照一一对应关系改成实际名称.网上找了下也找不到,理了下思路就自己开干,写一个咯.


批量修改-效果图

1.表格转成CSV格式不必要的东西都去掉,

2.手动处理要求vid不重复,视频名称也不重复,

3.代码思路:

  • 3.1,读取本地csv表格保存数组,得到每个数组里面是一个NSString(vid,name)
  • 3.2.遍历数组拿到每一个string,拆成数组,(vid和name分开)
  • 3.3遍历所有文件名包含vid的,拿到文件修改名称为name,return.

创建命令行项目,写个类zpNameTool
创建实例对象执行run
使用:修改宏FileDirectory为视频所在文件夹,pathxx为csv文件路径
不多说下面是代码:

//

#import "zpNameTool.h"
#define FileDirectory @"/Volumes/Untitled/视频/1"
#define pathxx @"/Users/lxmacmini/Desktop/zzzz000/videoList0000.csv"

@implementation zpNameTool

-(void)run{
    //获取文件夹内全部文件名称
    NSFileManager* manager11 = [NSFileManager defaultManager];
    NSArray *dirArray = [manager11 contentsOfDirectoryAtPath:FileDirectory error:nil];
    NSString *path = pathxx;
    NSString *fileContents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    //首先取出每一行的数据(vid,name)
    NSArray *_allLinedStrings = [fileContents componentsSeparatedByString:@"\r\n"];
    for (NSString *str in _allLinedStrings) {
        NSArray *tempArr2 = [str componentsSeparatedByString:@","];
        //        NSLog(@"VID:   %@        %@",tempArr2.firstObject,tempArr2.lastObject);//找到某个vid和对应的name
        [self changeString:tempArr2.firstObject name:tempArr2.lastObject arr:dirArray];
    }
}

- (void)changeString:(NSString *)Vid name:(NSString *)name arr:(NSArray *)dirArray
{
    NSFileManager* manager = [NSFileManager defaultManager];
    for (NSString *str in dirArray) {
//筛选出文件名内包含vid的文件
        if ([str rangeOfString:Vid].location != NSNotFound) {
            NSLog(@"成功--    %@   Name:  %@  %@",Vid,name,str);
            NSString* fromFileName = [FileDirectory stringByAppendingPathComponent:str];
            //获取后缀名
            NSString *lastName = [str pathExtension];
//            改变之后的文件名
            NSString* changedStr = [NSString stringWithFormat:@"%@.%@",name,lastName];
            // 改变之后的文件目录
            NSString* toFileName = [FileDirectory stringByAppendingPathComponent:changedStr];
            // 替换,其实也是重命名
            [manager moveItemAtPath:fromFileName toPath:toFileName error:nil];
            //            NSLog(@"===%@",changedStr);
            return;
        }
    }
    

相关文章

网友评论

      本文标题:Mac一对一批量修改文件名

      本文链接:https://www.haomeiwen.com/subject/giuxbftx.html