J'essaie d'écrire un petit script batch qui va supprimer les fichiers anciens fichiers d'un répertoire. Le premier paramètre est le répertoire du script à examiner, et le second est le nombre de fichiers à conserver.Batch Scripting, Pour l'utilisation des résultats d'un répertoire
rem @ECHO OFF
rem %1 is the path in which to look for the files
rem %2 is the number of recent files to preserve
if [%1] EQU [] (
echo ERROR: Missing Required Paramater directory path.
goto :eof
)
if [%2] EQU [] (
echo ERROR: Missing Required Paramater, number of files to preserve
goto :eof
)
if %2 LSS 0 (
echo ERROR: Number of files to preserve provided was negative
goto :eof
)
set FolderPath=%1
set SafeNumber=%2
cd %FolderPath%
for /f %%f in ('dir /O-D /A-D /B') do call :delete %%f
goto :eof
:delete
if %SafeNumber% LEQ 0 (
del %1
) else (
set /a SafeNumber-=1
)
goto :eof
:eof
Essentiellement ce que j'ai ici est un répertoire qui affiche une liste de noms commandés du plus récent au plus ancien. En fonction de ce SafeNumber, il sautera les premiers fichiers, puis procédera à la suppression une fois SafeNumber < = 0.
Le problème que j'ai en ce moment, est si le nom de fichier est "Test File.txt" (comme contient un espace. "Test" est passé dans la suppression en tant que% 1, plutôt que "Test File.txt".
Changé la déclaration pour être: pour/F "delims =" %% f dans ('dir/OD/AD/B % FolderPath% ') faire appel: supprimer "%% f" et maintenant la suppression obtient le nom de fichier complet. Citations aidé un groupe, n'a pas pensé à cela merci. –