Suppression d'un nombre de fichier donnée

Suppression d'un nombre de fichier donnée - Shell/Batch - Programmation

Marsh Posté le 06-02-2008 à 14:14:33    

Bonjour, je voudrais supprimer dans un dossier un certain nombre de fichier passé en paramètre !
 
Voilà comment je procède
 
set repertoire=%1
set nombre=%2
 
for /f "skip=%nombre%" %%a in ('dir /o-d /b %repertoire%\*.*') do del /Q /F /A "%repertoire%\%%a"

 
Cependant je n'arrive pas à supprimer les fichiers qui contiennent des espaces !
 
Quelqu'un aurait il une idée svp ?

Reply

Marsh Posté le 06-02-2008 à 14:14:33   

Reply

Marsh Posté le 06-02-2008 à 14:56:42    

Peut être utiliser le dir /x
 
 /X          This displays the short names generated for non-8dot3 file
             names.  The format is that of /N with the short name inserted
             before the long name. If no short name is present, blanks are
             displayed in its place.


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 06-02-2008 à 15:40:13    

le dir /x ne marche pas !
Merci quand même...

Reply

Marsh Posté le 06-02-2008 à 15:54:24    

T'es sous quel OS ?
 
et "dir /x ne marche pas " ça veut dire que l'option /x marche pas
chez toi  ou que tu n'as pas le résultat espéré ?


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 06-02-2008 à 16:33:33    

Je suis sous windows xp
En fait l'option "dir /x" ne m'obtient pas le résultat attendu effectivement !

Reply

Marsh Posté le 07-02-2008 à 07:58:38    

Pour moi 2 solutions :
Soit tu passes en paramètres le nom de fichier  
par ex NEWTEX~1.TXT au lieu de New Text Document.txt
=>
07/02/2008  07:54                 0 NEWTEX~1.TXT New Text Document.txt
 
 
Soit tu essaies de mettre le fichier  en paramètre encadré par des ""
=>  
C:\>cd temp
 
C:\temp>dir new*
 Volume in drive C is SYSTEM
 
 Directory of C:\temp
 
06/02/2008  14:53                 0 New Text Document.txt
               1 File(s)              0 bytes
               0 Dir(s)   7,850,057,728 bytes free
 
C:\temp>del "New text Document.txt"
 
C:\temp>dir new*
 Volume in drive C is SYSTEM
 
 Directory of C:\temp
 
File Not Found
 
Bon je laisse maintenant a place aux spécialistes ;-)
 


Message édité par vttman2 le 07-02-2008 à 07:58:56

---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 07-02-2008 à 13:14:20    

Je suis bien d'accord avec toi vttman2 pour les guillemets, l'ennuie c'est que dans ma boucle cela ne change rien !
 
for /f "skip=%nombre%" %%a in ('dir /o-d /b /N /X "%repertoire%\*.*"') do del /Q /F /A "%repertoire%\%%a" >>d:\fic.log

Reply

Marsh Posté le 29-02-2008 à 15:24:39    

Personne n'aurait une petite idée sur la question svp ?
 
Lorsque je passe par exemple la commande suivante :
 
for /f "skip=2" %%a in ('dir /o-d /b /N /X "D:\test\*.*"') do del /Q /F /A "D:\test\%%a"
 
avec la commande dir je récupère bien les 2 fichiers les plus récents du répertoire, cependant si le troisième fichier contient des espaces, il n'est pas supprimé !
 
Le problème je pense vient de la variable %%a qui prend en compte que le début du nom du fichier !

Reply

Marsh Posté le 29-02-2008 à 16:20:46    

Pour ceux que ça intéresse la solution est la suivante :
 
for /f "skip=2 tokens=6* delims=/ " %%a in ('dir /A-D /O-D D:\test\^|find "/"') do del /Q /F /A "D:\test\%%a %%b"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed