Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lister un répertoire

12 réponses
Avatar
alainL
Bonjour,
(Win XP SP3)
Je voudrais obtenir la liste des fichiers d'un répertoire, avec tous les
détails (et les tabulations) et si possible, le chemin depuis le
répertoire en cas de sous rép, afin de pouvoir copier-coller dans excel...
J'ai installé cette ligne de commande :
command.com /c tree /F /A > C:\Listing.txt
mais elle est incomplète, ne donnant que les noms des fichiers
Pour la petite histoire:
Mon dossier "Fleurs" est réparti en pas mal de sous-dossiers
"crucifères", "ombellifères" etc...
En partant de "Fleurs", je souhaiterais obtenir , pour chaque photo
/Sous-rép / nom du fichier .......... date exif de la photo
/crucifères/arabette01.jpg ............ 2013-03-15
/crucifères/cardamine05.jpg .......... 2012-03-10

Merci
--
AlainL

http://autourdalos.fr

2 réponses

1 2
Avatar
Serge Nazarian
Serge Nazarian a écrit le 04/05/2013 :
Jean-Claude a écrit le 02/05/2013 :
Bonjour,

pour continuer sur une commande en ligne :
- ouvrir une fenêtre de commande,
- se place dans le dossier Fleurs,
- exécuter :
for /r . %i in (*.jpg) do if /i "%~xi"==".jpg" echo %~ti %i >> listing.txt

Le résultat est de la forme :
07/10/2002 20:33 D:DonneesMes
videosPhotographiesgoldo-wallpaper6_1024x768.jpg
30/08/1999 20:21 D:DonneesMes videosPhotographiesgoldorak.jpg
20/01/2003 16:00 D:DonneesMes
videosPhotographieswallpaper10_1024x768.jpg

Une fois mis sous Excel, il suffit d'utiliser Convertir pour répartir les
données en colonnes et supprimer le superflus...

Jean-Claude



Bonjour,

Peux-tu expliquer en détails (ou référence Web)
if /i "%~xi"==".jpg" echo %~ti %i

Merci d'avance.



Je me réponds à moi-même, pour avoir une référence dans mes archives et
aussi parce que cela peut en intéresser d'autres.
Origine : help FOR

******************
La commande FOR exécute une commande donnée pour chaque fichier d'un
ensemble de fichiers.

FOR %variable IN (ensemble) DO commande [paramètres]

%variable Spécifie un paramètre remplaçable par une seule lettre.
(ensemble) Ensemble de fichiers. Caractères génériques autorisés.
commande Commande à exécuter pour chaque fichier.
paramètres Liste des paramètres ou des options pour la commande
spécifiée.

Pour utiliser la commande FOR dans un programme de commandes, spécifiez
%%variable au lieu de %variable. Les noms de variables respectent la
casse, donc %i est différent de %I.

Si les extensions de commandes sont activées, les formes
supplémentaires suivantes sont prises en charge pour la commande FOR :

FOR /D %variable IN (ensemble) DO commande [paramètres]

Si ensemble contient des caractères génériques, alors la
correspondance se fait sur les noms de répertoires au lieu des noms de
fichiers.

FOR /R [[lecteur:]chemin] %variable IN (ensemble) DO commande
[paramètres]

Parcourt l'arborescence de répertoires depuis la racine
[lecteur:]chemin, en exécutant FOR dans chaque répertoire de
l'arborescence. Si aucun répertoire n'est spécifié après /R alors le
répertoire en cours est utilisé. Si ensemble est seulement un point (.)
alors seule l'arborescence de répertoires sera énumérée.

FOR /L %variable IN (début,pas,fin) DO commande [paramètres]

L'ensemble est une séquence de chiffres allant de début à fin,
incrémenté de pas. Ainsi (1,1,5) génère la séquence 1 2 3 4 5 et
(5,-1,1) génère la séquence (5 4 3 2 1)

FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande
[paramètres]
FOR /F ["options"] %variable IN ("chaîne") DO commande [paramètres]
FOR /F ["options"] %variable IN ('commande') DO commande [paramètres]

ou, si l'option usebackq est utilisée :

FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande
[paramètres]
FOR /F ["options"] %variable IN ('chaîne') DO commande [paramètres]
FOR /F ["options"] %variable IN ((`commande`) DO commande [paramètres]

ensemble-fichiers est un ou plusieurs noms de fichiers. Chaque
fichier est ouvert, lu et traité avant de passer au fichier suivant de
ensemble-fichiers. Le traitement consiste à lire dans le fichier, le
découper en lignes individuelles de texte puis analyser chaque ligne en
zéro ou plusieurs jetons. Le corps de la boucle FOR est ensuite appelé
avec la ou les valeurs de variables prenant la valeur de la ou des
chaînes de jeton trouvées. Par défaut, /F transmet le premier jeton
séparé par un blanc dans chaque ligne de chaque fichier. Les lignes
vides sont ignorées.
Vous pouvez outrepasser le comportement d'analyse par défaut en
spécifiant le paramètre optionnel "options". Ceci est une chaîne entre
guillemets contenant un ou plusieurs mots-clés spécifiant diverses
options d'analyse.
Les mots-clés sont :

eol=c - spécifie un caractère de commentaire de fin
de ligne
(un seul)
skip=n - spécifie le nombre de lignes à ignorer en
début
de fichier.
delims=xxx - spécifie un ensemble de délimiteurs. Ceci
remplace
l'ensemble de délimiteurs par défaut qui sont
l'espace et la tabulation.
tokens=x,y,m-n - spécifie les jetons de chaque ligne devant
être
transmis au corps de FOR à chaque itération.
Ceci provoquera l'allocation de noms de
variables
supplémentaires. La forme m-n est une
étendue
spécifiant les jetons allant de m à n. Si le
dernier caractère de la chaîne tokens= est
une
astérisque, alors une variable supplémentaire
est
allouée et reçoit le texte restant dans la
ligne
suivant le dernier jeton analysé.
usebackq - spécifie que la nouvelle sémantique est en
place,
lorsqu'une chaîne entre guillemets inversés
est
exécutée en tant que commande et une chaîne
entre
guillemets simples est une chaîne de commande
littérale et permet l'utilisation de
guillemets
doubles pour citer des noms de fichiers.

Quelques exemples explicatifs :

FOR /F "eol=; tokens=2,3* delims=, " %i in (fichier.txt) do @echo %i %j
%k

analyse chaque ligne de monfichier.txt, en ignorant les lignes
commençant par un point-virgule, en transmettant les deuxième et
troisième jetons de chaque ligne au corps de FOR, les jetons étant
délimités par des virgules et/ou espaces. Notez que le corps de FOR
référence %i pour l'obtention du deuxième jeton, %j pour l'obtention du
troisième jeton et %k pour l'obtention des jetons restants après le
troisième. Pour les noms de fichiers contenant des espaces, placez les
noms de fichiers
entre guillemets doubles. Afin d'utiliser ainsi les guillemets
doubles, vous devez également utiliser l'option usebackq, faute de quoi
les guillemets doubles seraient interprétés comme définissant une
chaîne littérale à analyser.

%i est déclarée explicitement dans la déclaration FOR et %j et %k
sont déclarées implicitement via l'option tokens=. Vous pouvez
spécifier jusqu'à 26 jetons via la ligne tokens=, tant que cela ne
provoque pas de tentative de déclaration de variable plus élevée que la
lettre 'z' ou 'Z'. Souvenez-vous que les variables de FOR se composent
de lettres, tiennent compte de la casse, sont globales et que plus de
52 ne peuvent pas être actives à la fois.

Vous pouvez aussi utiliser la logique d'analyse FOR /F sur une
chaîne en plaçant ensemble-fichiers entre guillemets entre les
parenthèses, en utilisant des guillemets simples. Elle sera traitée
comme une ligne d'entrée simple provenant d'un fichier puis analysée.

Enfin, vous pouvez utiliser la commande FOR /F pour analyser la
sortie d'une commande. Faites ceci en plaçant des guillemets inversés
autour de ensemble-fichiers entre les parenthèses. Elle sera traitée
comme une ligne de commande transmise à un CMD.EXE enfant et la sortie
est gardée en mémoire et analysée comme s'il s'agissait d'un fichier.
Ainsi l'exemple suivant :

FOR /F "usebackq delims==" %i IN (`ensemble`) DO @echo %i

énumérerait les noms de variables d'environnement de
l'environnement en cours.

De plus, la substitution de références de variables FOR a été
améliorée.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :

%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d'accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d'accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms courts
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d'environnement PATH et étend %I en nom du premier fichier reconnu
trouvé. Si le nom de la variable d'environnement n'est pas défini ou
que le fichier n'est pas trouvé par la recherche, alors ce modificateur
étend en chaîne vide

Vous pouvez combiner les modificateurs pour obtenir des résultats
composés :

%~dpI - étend %I en lettre de lecteur et chemin d'accès
uniquement
%~nxI - étend %I en nom de fichier et extension uniquement
%~fsI - étend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les répertoires listés dans la variable
d'environnement PATH à la recherche de %I et étend en lettre de lecteur
du premier trouvé.
%~ftzaI - étend %I en DIR comme ligne en sortie

Dans les exemples ci-dessus %I et PATH peuvent être remplacés par
d'autres valeurs valides. La syntaxe %~ se termine par un nom de
variable FOR valide.
Le choix de noms de variables en majuscules comme %I facilite la
lecture et empêche toute confusion avec les modificateurs qui ne
tiennent pas compte de la casse.

--
Serge Nazarian
Pour m'écrire directement : http://cerbermail.com/?ZDkROVSJlu
Avatar
Jean-Claude
Pour répondre néanmoins à la question :

for /r . %i in (*.jpg) do
pour chaque fichier JPG du dossier courant (.) et de ses sous-dossiers
(/r), faire...

if /i "%~xi"==".jpg"
si l'extension (%~xi) est bien .jpg ou .JPG (/i = insensitive-case)
alors...

echo %~ti %i
restituer la date et heure du fichier (%~ti) et le nom complet du
fichier (%i)...

listing.txt




et les mettre (>>) dans le fichier listing.txt


Jean-Claude
1 2