Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

dir() function not working?

Asked by John

John (view profile)

on 19 Mar 2012

Hello,

I'm trying to rename some files using the code below. It works if I list the file names at the beginning but there are many files in the folder so I wanted to use the dir()function but it won't work for some reason. Would anybody know why?

Thanks

Working code:

files = {'RW.a_process',...
'Copy of RW.a_process',...
'Copy (2) of RW.a_process',...
'Copy (1000) of RW.a_process'}
for k = 1 : length(files)
	oldFileName = files{k}
	leftParenthesisLocation = strfind(oldFileName, 'Copy (');
	if leftParenthesisLocation >= 1
		% Handle cases of Copy (nnn) of RW.a_process
		rightParenthesisLocation = strfind(oldFileName(leftParenthesisLocation:end), ')');
		if rightParenthesisLocation > 1
			strNumber = oldFileName(leftParenthesisLocation+6:rightParenthesisLocation-1)
			% Get name to the right of the right parenthesis.
			newFileName = oldFileName(rightParenthesisLocation+5:end);
			[folder, baseFileName, ext] = fileparts(newFileName);
			newFileName = sprintf('%s%s%s', baseFileName, strNumber, ext);
			fprintf('New Filename = %s\n', newFileName); % Print blank line.
		end

Not working code:

files = dir('*.a_process');
for k = 1 : length(files)
	oldFileName = files{k}
	leftParenthesisLocation = strfind(oldFileName, 'Copy (');
	if leftParenthesisLocation >= 1
		% Handle cases of Copy (nnn) of RW.a_cycle
		rightParenthesisLocation = strfind(oldFileName(leftParenthesisLocation:end), ')');
		if rightParenthesisLocation > 1
			strNumber = oldFileName(leftParenthesisLocation+6:rightParenthesisLocation-1)
			% Get name to the right of the right parenthesis.
			newFileName = oldFileName(rightParenthesisLocation+5:end);
			[folder, baseFileName, ext] = fileparts(newFileName);
			newFileName = sprintf('%s%s%s', baseFileName, strNumber, ext);
			fprintf('New Filename = %s\n', newFileName); % Print blank line.
             movefile(oldFileName, newFileName) 
		end 

0 Comments

John

John (view profile)

Tags

Products

No products are associated with this question.

1 Answer

Answer by Honglei Chen

Honglei Chen (view profile)

on 19 Mar 2012
Accepted answer

You need to use

oldFileName = files(k).name

see

http://www.mathworks.com/help/techdoc/ref/dir.html

0 Comments

Honglei Chen

Honglei Chen (view profile)

Contact us