• Miércoles 22 de Mayo de 2024, 01:05

Autor Tema:  Recorrer Un Directorio  (Leído 6760 veces)

waltercordova

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Recorrer Un Directorio
« en: Martes 22 de Abril de 2008, 08:39 »
0
Estimados
Ante todo gracias por leer este mensaje, estoy intentando recorrer un directorio y extraer los nombres de los archivos que estan en el mismo en un array.En otras palabras Si el directorio "G:\TesisGO\NUEVASMATRICES" contiene los archivos
"file1" ,"file2","file3", lo que necesito es extraer esos nombres en un vector
vector=[file1;file2;file3], es posible hacer esto?
muchas gracias
Walter

Quicksilver

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #1 en: Martes 22 de Abril de 2008, 18:42 »
0
Si, es posible, con la función dir lo permite, trataré de poner un breve ejemplo, en la ayuda de matlab, podrás encontrar mucho acerca de esto.

Supongamos que necesitas extraerel nombre o la cantidad de imágenes que están en una carpeta.



Código: Text
  1.  
  2. T=dir('*.jpg');    %Guarda todas las imágenes que tengas en esa carpeta en un vector
  3.  
  4. %ejemplo, si fueran archivos .doc
  5.  
  6. T=dir('*.doc');
  7.  

Ahora, la función dir, cuando la desplegas posee las siguientes propiedades.

0x1 struct array with fields:     % Tamaño del vector
    name
    date
    bytes
    isdir
    datenum

Para guardar los nombres has lo siguiente.

Código: Text
  1.  
  2. [fi,co]=size(T);   %saca las dimensiones del vector, que será un vector de nx1
  3.  
  4. T.name             % Te desplega todo los valores
  5.  


Nota: Para poder usar bien esta función, te recomiendo, que pases los archivos necesarios a la carpeta de MatLab, normalmente se encuentra en mis documentos, intenta también añadiendo el Path, sin embargo, no he intentado con este último.


Uns saludo, espero haber servido de ayuda, y espero pues, que si llegas a la solución de tu problema, coloques la respuesta, o si cualquier otra ayuda, aca estaremos.
Everything that has a beginning has an end

fa61an

  • Miembro MUY activo
  • ***
  • Mensajes: 100
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #2 en: Miércoles 23 de Abril de 2008, 04:09 »
0
Esta interesante la funcion dir..... excelente explicacion

Quicksilver

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #3 en: Miércoles 23 de Abril de 2008, 21:40 »
0
fa61an, gracias pues por el comentario, espero que te haya gustado la explicación que dí de la función "dir" esperemos también que al dueño del post le haya servido.

Para aprender a manejar esta función bien, es bueno jugar con un ella un rato en el command window.

Un saludo...
Everything that has a beginning has an end

mardedudas

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #4 en: Miércoles 30 de Abril de 2008, 11:26 »
0
HOla
La verdad que la explicación que te dan es bastante buena, solo te falta hacerte con ella, pero rebuscando en Matlab, he encontrado un programita ya hecho que te devuelve todos los arhivos que hay en un directorio; te lo saca en un ventanita muy curioso.

\MATLAB\R2006b\help\techdoc\creating_guis\examples\lbox2.m     (lbox2.fig)
esa es la ruta.

Te mando el codigo a ver que te parece.
Espero que te sea de ayuda:

------------------------------------------------------------------------------------------------------

function varargout = lbox2(varargin)
% LBOX2 Application M-file for lbox2.fig
%   LBOX2, by itself, creates a new LBOX2 or raises the existing
%   singleton*.
%
%   H = LBOX2 returns the handle to a new LBOX2 or the handle to
%   the existing singleton*.
%
%   LBOX2('CALLBACK',hObject,eventData,handles,...) calls the local
%   function named CALLBACK in LBOX2.M with the given input arguments.
%
%   LBOX2('Property','Value',...) creates a new LBOX2 or raises the
%   existing singleton*.  Starting from the left, property value pairs are
%   applied to the GUI before lbox2_OpeningFunction gets called.  An
%   unrecognized property name or invalid value makes property application
%   stop.  All inputs are passed to lbox2_OpeningFcn via varargin.
%
%   *See GUI Options - GUI allows only one instance to run (singleton).
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2000-2006 The MathWorks, Inc.

% Edit the above text to modify the response to help lbox2

% Last Modified by GUIDE v2.5 24-Aug-2004 10:31:32

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',          mfilename, ...
                   'gui_Singleton',     gui_Singleton, ...
                   'gui_OpeningFcn',    @lbox2_OpeningFcn, ...
                   'gui_OutputFcn',     @lbox2_OutputFcn, ...
                   'gui_LayoutFcn',     [], ...
                   'gui_Callback',      []);
if nargin && ischar(varargin{1})
   gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before lbox2 is made visible.
function lbox2_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to lbox2 (see VARARGIN)

% Choose default command line output for lbox2
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

if nargin == 3,
    initial_dir = pwd;
elseif nargin > 4
    if strcmpi(varargin{1},'dir')
        if exist(varargin{2},'dir')
            initial_dir = varargin{2};
        else
            errordlg('Input argument must be a valid directory','Input Argument Error!')
            return
        end
    else
        errordlg('Unrecognized input argument','Input Argument Error!');
        return;
    end
end
% Populate the listbox
load_listbox(initial_dir,handles)
% Return figure handle as first output argument
   
% UIWAIT makes lbox2 wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = lbox2_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% ------------------------------------------------------------
% Callback for list box - open .fig with guide, otherwise use open
% ------------------------------------------------------------
function listbox1_Callback(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from listbox1

get(handles.figure1,'SelectionType');
if strcmp(get(handles.figure1,'SelectionType'),'open')
    index_selected = get(handles.listbox1,'Value');
    file_list = get(handles.listbox1,'String');
    filename = file_list{index_selected};
    if  handles.is_dir(handles.sorted_index(index_selected))
        cd (filename)
        load_listbox(pwd,handles)
    else
        [path,name,ext,ver] = fileparts(filename);
        switch ext
            case '.fig'
                guide (filename)
            otherwise
                try
                    open(filename)
                catch
                    errordlg(lasterr,'File Type Error','modal')
                end
        end
    end
end
% ------------------------------------------------------------
% Read the current directory and sort the names
% ------------------------------------------------------------
function load_listbox(dir_path,handles)
cd (dir_path)
dir_struct = dir(dir_path);
[sorted_names,sorted_index] = sortrows({dir_struct.name}');
handles.file_names = sorted_names;
handles.is_dir = [dir_struct.isdir];
handles.sorted_index = sorted_index;
guidata(handles.figure1,handles)
set(handles.listbox1,'String',handles.file_names,...
   'Value',1)
set(handles.text1,'String',pwd)


% --- Executes during object creation, after setting all properties.
function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background, change
%       'usewhitebg' to 0 to use default.  See ISPC and COMPUTER.
usewhitebg = 1;
if usewhitebg
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end


% --- Executes during object creation, after setting all properties.
function figure1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Add the current directory to the path, as the pwd might change thru' the
% gui. Remove the directory from the path when gui is closed
% (See figure1_DeleteFcn)
setappdata(hObject, 'StartPath', pwd);
addpath(pwd);


% --- Executes during object deletion, before destroying properties.
function figure1_DeleteFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Remove the directory added to the path in the figure1_CreateFcn.
if isappdata(hObject, 'StartPath')
    rmpath(getappdata(hObject, 'StartPath'));
end

--------------------------------------------------------------------------------------------------

Suerte

Te mando los 2 archivitos comprimidos listadoDirectorio.rar
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

waltercordova

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #5 en: Domingo 4 de Mayo de 2008, 05:51 »
0
Estimados amigos,
Ante todo disculpen por la demora en la respuesta, acabo de ejecutar  el codigo con el comando dir y funciona de las mil maravillas.

Aqui les muestro lo que hice

T=dir('G:\TesisGO\NUEVASMATRICES\*.cep'); %Funciona añadiendo el path!!
Luego tengo una estructura de arrays, con varios atributos, de momento ami me interesa el nombre , entonces si deseo guardar el nombre del primer archivo puedo colocar

primernombre=T(1).name
segundonombre=T(2).name
....
....

Gracias de verdad Quicksilver y mardedudas.Si puedo ayudar en algo encantado
Estamos en contacto
Saludos
Walter

Quicksilver

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
Re: Recorrer Un Directorio
« Respuesta #6 en: Miércoles 14 de Mayo de 2008, 05:48 »
0
Siempre es bueno cuando a los del foro nos funciona un código, no te preocupes, siempre para servir en lo que pueda, y en mi humilde conocimiento, pues apenas estoy empezando a programar en matlab.
Everything that has a beginning has an end