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