Affichage fichier dans répertoire

Affichage fichier dans répertoire - Shell/Batch - Programmation

Marsh Posté le 28-10-2013 à 16:50:52    

Bonjour,
 
Dans une ligne de commande d'un de mes scripts, j'aimerai lister des fichiers de plusieurs répertoires et sous répertoires.
 
Voici le code en question :
 

Citation :


for /f "tokens=1-3,5,* delims=/s " %%a in ('dir /a-d /s %chemin%\%dossier%^|find "/"') do (echo %%e)


 
La ligne de commande fonctionne très bien ! Par contre dès que le répertoire est vide, il y a "fichier introuvable" d'inscrit à l'écran, ce qui est très gênant.
 
Est-ce que quelqu'un aurait une idée svp pour éviter cela ?
 
Merci d'avance.

Reply

Marsh Posté le 28-10-2013 à 16:50:52   

Reply

Marsh Posté le 29-10-2013 à 09:10:33    

Il manque le contexte.
 
Néanmoins, j'ai testé :

dir /s

Cela ramène la liste des répertoires et des fichiers, avec des lignes récapitulatives.
 

dir /s|find "/"

Cela ramène la liste des répertoires et des fichiers.
 

dir /s |find "/"|findstr /V "<REP>"

Cela ramène la liste des fichiers.
L'option /V de findstr permet de trouver tout sauf les lignes contenant la chaine qui est indiquée.

Reply

Marsh Posté le 29-10-2013 à 10:14:57    

Merci pour ta réponse olivthill.
 
Le contexte, c'est lister l'ensemble des fichiers de plusieurs répertoires et sous répertoires pour ensuite les supprimer par rapport à une date donnée.
 
Le tout est transcrit dans une log. Ce qui m'ennuie, c'est que lorsque le script tombe sur une répertoire vide, la commande renvoie "Fichier introuvable".  
 
Sachant qu'il y a des milliers de répertoires, ça pourrit les logs.

Reply

Marsh Posté le 29-10-2013 à 10:58:17    

Je n'arrive pas à tester parce que ta commande me renvoie "%%a était inattendu."
 
Par ailleurs, quand je fais un dir /s, je ne vois jamais de message "fichier introuvable".
 
Mais, je suis à peu près certain que l'ajout de findstr /V "quelquechose" résoudra le problème.
Je ferais :

for /f "tokens=1-3,5,* delims=/s " %%a in ('dir /a-d /s %chemin%\%dossier%^|find "/"|findstr /V "<REP>"|findstr /V "fichier introuvable"') do (echo %%e)

ou

for /f "tokens=1-3,5,* delims=/s " %%a in ('dir /a-d /s %chemin%\%dossier%^|find "/"|findstr /V "<REP>"') do (echo %%e|findstr /V "fichier introuvable" )


Message édité par olivthill le 29-10-2013 à 11:02:59
Reply

Marsh Posté le 29-10-2013 à 11:29:01    

Si tu teste directement sous une fenêtre DOS, c'est normal, il faut que mette qu'un "%" au la place des deux "%%" dans un .bat ou .cmd.
 
Par contre il y a une petite erreur dans ta commande au niveau des find :
 

Code :
  1. for /f "tokens=1-3,5,* delims=/ " %%a in ('dir /a-d /s %chemin%\%dossier%^|find "/"^|findstr /V "<REP>"^|findstr /V "fichier introuvable"') do (echo %%e)


 
Par contre j'ai testé les deux solutions et aucune ne fonctionne malheureusement !

Reply

Sujets relatifs:

Leave a Replay

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