Kettle使用_14 文件操作复制移动删除结合JS
需求: 通过Kettle的组件实现文件夹下所有文件的复制和重命名。
比如:将文件名1快乐成语001【持之以恒】.mp3 重命名为001持之以恒.mp3
解决方法:结合获取文件名、Javascript脚本和处理文件组件解决。
注:同理我们可以对文件进行移动、删除操作,详见文末的补充部分。补充部分同时也附录了python版文件重命名代码。
Previous work:
准备数据(这里是5个mp3文件)。
Step1: 新建个转换。
Step2: 拖个获取文件名到转换里,该组件位于转换的输入分类下。
Step3:配置获取文件名组件:
Step4:拖个Javascript组件,该组件位于转换的脚本分类下。
Step5:SHIFT连接获取文件名和Javascript组件。
Step6: 定义Javascript变量,处理重命名逻辑。
//Script here
//拷贝
var copyfile='F:\\hp2\\'+short_filename.substring(short_filename.indexOf('语')+1).replace('【','').replace('】','')
//移动
var movefile='F:\\hp2\\'+short_filename
Step7: 拖个处理文件组件, 该组件位于转换的应用分类下。
Step8: SHIFT连接Javascript组件与处理文件组件。
Step9:配置处理文件组件:
Step10:运行与验证
补充:
移动场景:
删除场景:
Python代码示例:
def reename():
nm = 1
pathh = "F:\Happy"
filelist = os.listdir(pathh)
for files in filelist:
Olddir = os.path.join(pathh, files)
filename = os.path.splitext(files)[0]
filetype = os.path.splitext(files)[1]
if filename.find('语')>0:
another_name=filename.replace('【','').replace('】','')
#print(another_name[another_name.find('语')+1:])
Newdir = os.path.join('F:\\hp2\\'+another_name[another_name.find('语')+1:] + filetype)
else:
Newdir = os.path.join('F:\\hp2\\' + filename + filetype)
os.rename(Olddir, Newdir)
nm += 1