File 更改文件名
我有一个关于如何更改某些文件名的问题。问题是我有这样的档案,例如:File 更改文件名,file,matlab,filenames,File,Matlab,Filenames,我有一个关于如何更改某些文件名的问题。问题是我有这样的档案,例如: 25614_z.zip 25312_z.zip 25003_z.zip 我想创造一个: lp_25_614.zip lp_25_312.zip lp_25_003.zip 所以,我需要自动化这个过程 lp+25(前两位数字)+3、4和5位数字)+点压缩 有什么办法吗 编辑 例如,这就是我的情况: XXXX if fileNames{k}(3:5) >0 <5 (the interval)= 2 fileNames
25614_z.zip
25312_z.zip
25003_z.zip
我想创造一个:
lp_25_614.zip
lp_25_312.zip
lp_25_003.zip
所以,我需要自动化这个过程
lp+25(前两位数字)+3、4和5位数字)+点压缩
有什么办法吗
编辑
例如,这就是我的情况:
XXXX
if fileNames{k}(3:5) >0 <5 (the interval)= 2
fileNames{k}(3:5)> >5 >10 =10
可能吗?您可以使用重命名文件:
myPath = 'C:\myFolder\'; % path to your files
fileNames = {
'25614_z.zip'
'25312_z.zip'
'25003_z.zip'
}
for k = 1:length(fileNames)
newFileName = ['lp_' fileNames{k}(1:2) '_' fileNames{k}(3:5) '.zip'];
% renaming
movefile([myPath fileNames{k}], [myPath newFileName]);
end
~编辑~
关于您的编辑:是的,可以为不同的情况生成不同的文件名。请注意,下面的示例非常笨拙,仅当您只有少量不同的案例时才应使用
myPath = 'C:\myFolder\'; % path to your files
fileNames = {
'25614_z.zip'
'25312_z.zip'
'25003_z.zip'
}
for k = 1:length(fileNames)
n = num2str(fileNames{k}(3:5));
if n > 0 && n < 5
fileName = % put your file name for this case here
elseif n >= 5 && n < 10
fileName = % put your file name for this case here
elseif n >= 10 && n < 20
fileName = % put your file name for this case here
end
% renaming
movefile([myPath fileNames{k}], [myPath newFileName]);
end
myPath='C:\myFolder\';%文件的路径
文件名={
“25614_z.zip”
“25312_z.zip”
“25003_z.zip”
}
对于k=1:长度(文件名)
n=num2str(文件名{k}(3:5));
如果n>0&&n<5
fileName=%请在此处输入此案例的文件名
elseif n>=5&&n<10
fileName=%请在此处输入此案例的文件名
elseif n>=10&&n<20
fileName=%请在此处输入此案例的文件名
结束
%更名
movefile([myPath fileNames{k}],[myPath newFileName]);
结束
作为更通用的解决方案,您可以将regexp
与Token
参数一起使用,以匹配字符串的各个部分:
for k = 1:length(fileNames)
splitname = regexp(fileNames{k}, '(\d\d)(\d\d\d)', 'Tokens');
fname_new = ['lp_' splitname{1}{1} '_' splitname{1}{2} '.zip'];
movefile(fileNames{k}, fname_new);
end
这里,
regexp
中的模式是匹配两位数字和三位数字。非常感谢angainor!最后一个解决方案有效,但我也要试试你的!;)你的代码也是如此!我已经有了新名字的列表,但我不知道如何在新文件夹中创建一个重命名的新“文件”。我在想怎么做!一个问题!我在一个名为“NewFileName”的新数组中更改了名称,但我不知道是否可以用这个新名称复制与原始文件相同的文件?可能吗?提前感谢,要重命名文件,请使用命令movefile
,就像我的代码示例中一样。是的,但它不会从原始文件夹创建或重命名该文件,不是吗?我不知道我是否解释得很好。。。(谢谢!)@user1578688如果原始文件夹与运行matlab脚本的文件夹不同,则您需要将文件路径与newfilename
和filenames
垂直,或者需要位于文件所在的目录中(使用chdir
),您需要在movefile
命令中包含路径。请看我的最新答案。
for k = 1:length(fileNames)
splitname = regexp(fileNames{k}, '(\d\d)(\d\d\d)', 'Tokens');
fname_new = ['lp_' splitname{1}{1} '_' splitname{1}{2} '.zip'];
movefile(fileNames{k}, fname_new);
end