Je recherche un outil (ou commande DOS) qui me permettrait de lister l'ensemble des dossiers, sous dossiers, fichiers, date de création, dernière date de modification à partir d'un répertoire sous C:\ ou sur un réseau.
Je travaille sur Windows Vista
Si en plus le résultat pouvait être exporté en .csv ou .txt pour alimenter derrière une base Access ou un fichier Excel, alors là, ce serait le paradis
Je fais des recherches également de mon côté. Merci.
Pas besoin de PowerShell, notre bon vieux cmd.exe est bien assez puissant pour ça.
Tu as la commande dir qui te permet de lister les fichiers et répertoires.
Avec certaines options et attributs tu peux voir les fichiers cachés ou encore leur dâte de création etc...
Si tu veux exporter le résultat d'une commande dans un fichier .txt il te suffit de rajouter > nomdufichier.txt.
La commande de base serais donc :
dir c:\ /a > liste.txt
Si tu veux plus d'options pour ta commande, la liste se trouve <lien url=http://1100f.free.fr/Batchs/la_commande_dir.htm>ici</lien>
[lecteur:][chemin][nom_de_fichier]
Spécifie le lecteur, le répertoire et/ou fichiers à lister.
/A Affiche les fichiers dotés des attributs spécifiés.
attributs D Répertoires R Lecture seule
H Caché A Archive
S Système - Préfixe de négation
/B Utilise le format abrégé (noms des fichiers).
/C Affiche le séparateur de milliers pour les tailles de fichiers.
Ceci est la valeur par défaut. Utilisez /-C pour désactiver l'affichage
du séparateur.
/D Sur cinq colonnes avec fichiers triés par colonne.
/L Affiche en minuscules.
/N Nouveau format longue liste où les noms de fichiers sont à droite.
/O Affiche les fichiers selon un tri spécifié.
tri N Nom (alphabétique) S Taille (ordre croissant)
E Extension (alphabétique) D Date et heure (chronologique)
G Répertoires en tête - Préfixe en ordre indirect
/P Arrêt après l'affichage d'un écran d'informations.
/Q Affiche le nom du propriétaire du fichier.
/S Affiche les fichiers d'un répertoire et de ses sous-répertoires.
/T Contrôle le champ heure affiché ou utilisé dans le tri.
heure C Création
A Dernier accès
W Dernière écriture
/W Affichage sur cinq colonnes.
/X Affiche les noms courts générés pour les noms de fichier non 8.3 car.
Ce format est celui de /N avec le nom court inséré avant le nom long.
S'il n'y a pas de nom court, des espaces seront affichés à la place.
/4 Affiche l'année sur quatre chiffres.
Les commutateurs peuvent être préconfigurés dans la variable d'environnement
DIRCMD. Pour les ignorer, les préfixer avec un trait d'union. Par exemple /-W.
Je suis plus habitué au shell de linux... Tu ne saurait pas s'il y a l'équivalent de la commande grep sous DOS? C'est une commande qui permet de récupérer juste une partie d'une ligne (par exemple la première colonne).
Merci beaucoup vous m'avez déjà permis de bien avancer
J'ai essayé ceci :
dir [chemin répertoire] /s/b/ad
J'obtiens bien, ligne par ligne, un chemin complet pour chaque répertoire et sous-répertoire. Parfait pour récupérer ça en Excel ou Access
Si je veux rajouter /T:W ou /T:C cela ne fonctionne pas , j'obtiens le même résultat que sans ce paramètre. C'est dommage car j'aurais absolument besoin des dates de dernières modifications.
Sinon je n'ai pas trouvé PowerShell, ou plutôt je ne comprends pas ce que c'est... Est-ce un utilitaire ?
PowerShell, c'est le futur de la ligne de commandes sous Windows.
Genre 1000x plus puissant (et - je vais me faire tuer - plus puissant que le shell unix..).
Avec ça tu peux récupérer les infos des fichiers et ensuite les afficher comme tu veux... mais j'en sais pas plus.
Voilà un script qui devrait pouvoir t'aider... Il est encore à débugger, désolé Mais ça devrait te fournir une bonne base... Je n'ai fait qu'afficher les informations mais avec une redirection vers un fichier, tu peux les stocker avec un séparateur particulier et donc les ré exploiter dernière...
@echo off
echo .:: Listage des fichiers du repertoire C:\ ::.
echo -------------------------------------
:: On parcours la liste de tous les fichiers
for /r C:\ %%i in (*) do (
:: On affiche le chemin complet du fichier
echo Fichier: %%i
:: On affiche le nom de fichier
echo Nom: %%~nxi
:: On Affiche le répertoire du fichier
echo Répertoire: %%~dpi
:: On récupère et on affiche la date de création du fichier
for /f "tokens=1 delims= " %%c in ('dir %%~dpi /T:c ^| find "%%~nxi"') do echo date de création: %%c
:: On récupère et on affiche la date de dernier accès du fichier
for /f "tokens=1 delims= " %%a in ('dir %%~dpi /T:a ^| find "%%~nxi"') do echo date de dernier accès: %%a
:: On récupère et on affiche la date de dernière écriture du fichier
for /f "tokens=1 delims= " %%w in ('dir %%~dpi /T:w ^| find "%%~nxi"') do echo date de derniere ecriture: %%w
echo -------------------------------------
)
pause
@echo off
set repertoire=C:\
:: Supprime l'éventuel fichier listage.txt provenant d'une exécution antérieure du script
del listage.txt
:: Permet d'utiliser des variables dans les boucles for
setlocal enableDelayedExpansion
echo .:: Listage des fichiers du repertoire %repertoire% ::.
echo -------------------------------------
:: On parcours la liste de tous les fichiers
for /r %repertoire% %%i in (*) do (
:: On stock le chemin complet du fichier
set fichier=%%i
:: On stock le nom de fichier
set fichier=%%~nxi
:: On Affiche le répertoire courant
set repertoire=%%~dpi
:: On récupère et on stock la date de création du fichier
for /f "tokens=1 delims= " %%c in ('dir "%%~dpi" /T:c ^| find "%%~nxi"') do set dateC=%%c
:: On récupère et on stock la date de dernier accès du fichier
for /f "tokens=1 delims= " %%a in ('dir "%%~dpi" /T:a ^| find "%%~nxi"') do set dateDA=%%a
:: On récupère et on stock la date de dernière écriture du fichier
for /f "tokens=1 delims= " %%w in ('dir "%%~dpi" /T:w ^| find "%%~nxi"') do set dateDE=%%w
:: On affiche les informations séparées par des | annulés par un accent circonflexe
echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE!
:: On écrit les informations ligne après ligne dans le fichier listage.txt
echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE! >> listage.txt
echo -------------------------------------
)
endlocal
pause
Il parcours toute l'arborescence à partir du répertoire défini à la ligne set repertoire=C:\ (ici le répertoire de début et C:\) et pour chaque fichier affiche:
le répertoire du fichier | le nom du fichier | la date de création du fichier | la date de dernier accès du fichier | la date de dernière modification du fichier
Et inscrit ces informations dans un fichier nommé listage.txt
On sait jamais, ça pourra peut-être servir à quelqu'un d'autre un jour...
Tout d'abord, merci aussi : ce batch m'a déjà été très utile
Même si ça fait bientôt 7 ans que le sujet a été initié, je me permets de rajouter 2 questions complémentaires :
- le fichier texte exporté ne gère pas bien les accents des chemins / fichiers (ex. : "unités paysagères.ai" devient "unit‚s paysagŠres.ai"). Pensez-vous qu'il soit possible de gérer cela ?
- pensez-vous qu'il soit possible d'ajouter dans ce listing les "répertoires" et leur date de création / accès / modification ? (pas uniquement les fichiers de ces répertoires)
Merci à vous !
Sylvain
Edition :
Désolé, pour le premier point, je viens de trouver tout seul comme un grand, en ajoutant :
chcp 28591 > nul
Ça marche !
Pour le 2e point (prise en compte des répertoires), je veux bien votre aide
4 octobre 2019 à 16:21:53
- Message modéré pour le motif suivant : Merci de créer votre propre sujet
Listage de répertoires
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Kevin Cousin, passionné d'informatique
Kevin Cousin, passionné d'informatique