J'ai un nombre incalculable de dossiers auxquels je dois accéder etsupprimer les 6 premiers fichiers à l'intérieur. Actuellement, j'ai un code pour aller dans le dossier et supprimer chaque fichier un par un. Je n'arrive pas à comprendre comment créer une boucle pour simplifier ce code.
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
Gardez à l'esprit que le code ci-dessus est copié / collé plusieurs fois. Par exemple, j'ai un autre code en dessous comme:
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
J'apprécie l'aide! (avec explication pour un débutant s'il vous plaît)
Merci
Réponses:
0 pour la réponse № 1Vous pourriez commencer par améliorer un peu la boucle for.
for i = 1:length(targetFolder)
for fileNr = 1:6
delete(fullfile(targetFolder{i}, sprintf("*00%d.nii", fileNr)));
end
end
La variable targetFolder
devrait contenir tous les dossiers que vous souhaitez supprimer des fichiers. Si ces dossiers sélectionnés d'une manière particulière, vous pourriez simplement les aligner:
targetFolder = { ...
fullfile(FNrunsRootDir, FolderA), ...
fullfile(FNrunsRootDir, FolderC), ...
...
fullfile(ALSrunsRootDir, FolderX), ...
fullfile(ALSrunsRootDir, FolderY), ...
...
};
Si tout les sous-dossiers de chaque dossier racine doivent être choisis et utilisés dir
les attraper
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