2016-09-02 13 views
0

私は数え切れないほどのフォルダを持っています。最初の6つのファイルにアクセスして削除する必要があります。現在、私はフォルダに移動し、各ファイルを1つずつ削除するコードを持っています。このコードを単純化するためにループを作成する方法を理解できないようです。ループを使ってMatlab内の特定のファイルを削除する

FN_NIFTI = 'C: path'; 
funcdir = 'C: path'/folder'; 
FNruns = {'Folder 1', 'Folder 2', 'Folder 3', etc..}; 

for i=1:length(FNruns) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*001.nii')) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*002.nii')) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*003.nii')) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*004.nii')) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*005.nii')) 
    delete(fullfile(FN_NIFTI,funcdir,FNruns{i},'*006.nii')) 
end 

上記のコードは、複数回コピー/貼り付けされています。たとえば、次のようなコードがあります。

ASL_NIFTI = 'C: path'; 
funcdir = 'C: path'/folder'; 
ASLruns = {'Folder 1', 'Folder 2', 'Folder 3', etc..}; 

for i=1:length(NWruns) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*001.nii')) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*002.nii')) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*003.nii')) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*004.nii')) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*005.nii')) 
    delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},'*006.nii')) 
end 

私は助けてくれてありがとう!

おかげ

答えて

0

(初心者してくださいについての説明を)あなたは、forループビットを改善することにより開始することができます。

for i = 1:length(targetFolder) 
    for fileNr = 1:6 
     delete(fullfile(targetFolder{i}, sprintf('*00%d.nii', fileNr))); 
    end 
end 

変数targetFolderはあなたのファイルを削除したいすべてのフォルダが含まれている必要がありtheeseフォルダは特別な方法で選択された場合は、単にそれらを並べることもできます。

targetFolder = { ... 
    fullfile(FNrunsRootDir, FolderA), ... 
    fullfile(FNrunsRootDir, FolderC), ... 
    ... 
    fullfile(ALSrunsRootDir, FolderX), ... 
    fullfile(ALSrunsRootDir, FolderY), ... 
    ... 
}; 

場合は、すべてのサブフォルダを各ルートフォルダには、dirを使用して取得する必要があります

rootDirs = {FNrunsRootDir, ALSrunsRootDir, ...} 

for iDir = 1:length(rootDirs) 
    subDirs = dir(rootDirs{iDir}); 
    % Pick out all valid sub folders 
    subDir = setdiff({subDir([subDir.isdir]).name}, {'.','..'}); 
    % Combine into full folder paths 
    targetFolder = strcat(rootDirs{i}, filesep, subDir); 

     %%%% FOR LOOP FROM ABOVE GOES HERE %%%% 

end 
関連する問題