Apply functions or m to a folder(multiple files)

3 ビュー (過去 30 日間)
Az
Az 2011 年 9 月 14 日
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 Center および File ExchangeFile Operations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by