Apply functions or m to a folder(multiple files)

1 次查看(过去 30 天)
I got a folder with say 100 file with the random names of haah.xls,kiij.xls etc. I have a function(say QQQ.m) I want to apply to them which would eventually convert the file to csv. I want to do two things: 1)How to apply QQQ.m to the folder 2)I want to rename the converted file according to its original name.Now the function does this, convert haah.xls to 1.csv. I want it to automatically rename to haah.csv Thanks in advance!!!
  1 个评论
Jan
Jan 2011-9-14
If you post yozur code, it would be easy to explain which single line has to be changed. Without seeing your code, we could only reply a theoretical description of what muist be changed.
So please show us, what you have done already.

请先登录,再进行评论。

回答(1 个)

Jan
Jan 2011-9-14
  • Use DIR to get a list of files.
  • Then use a FOR loop to get one file after the other.
  • Read the file. It is impossible to get a more specific instruction, because you did not explain the format of the files.
  • Write the converted file using the same file name, but the different file extension. This is smarter than writing "1.csv" and using MOVEFILE to rename the file afterwards.
If you include more details in your question, a more specific answer is possible.
[EDITED]: You must have the original file name to read the file. So why do you use "1.csv" and not something like:
[fPath, fName] = fileparts(OriginalFileName);
newfileName = fullfile(fPath, [fName, '.csv']);
cell2csv(newFileName, W);
  2 个评论
Az
Az 2011-9-14
Thank you for your help!
I got a folder with file 20010101-20010601.xls all the way to 20110601-20110901.xls, 26 files.but I got several folders.
I got a function to convert any file to what I want but the default name of the output is 1.csv.
Now what I want to do is process all the files under one folder at one time and automatically renamed to 20010101-20010601.csv all the way to 20110601-20110901.csv.
I hope it clearify my question.
My function looks like this:
function W=nav(data,textdata)
K=data(:,2:2:end)
c_size=size(K,2)
l=4000*c_size
NAV=num2cell(reshape(K,l,1))
a=textdata(2,:)
b=a(:,4:2:end)
c=b(:,1:c_size)
DATE=reshape(repmat(c,4000,1),l,1)
ID=num2cell(repmat(data(:,1),c_size,1))
O=horzcat(DATE,ID,NAV)
u={'Date','FundID','Nav'}
W=vertcat(u,O)
LocRemov=find(isnan(cell2mat(W(2:end,3))))+1
W(LocRemov,:)=[]
cell2csv('1.csv',W)
end
Thank you so much
Jan
Jan 2011-9-14
Please insert the code to your original question.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by