web-dev-qa-db-fra.com

Comment lister tous les fichiers et répertoires d'un répertoire donné avec un chemin complet mais pas récursif?

D'une certaine manière, comme la commande dir /b, mais il me faut aussi les fichiers cachés et système. La commande dir intégrée ne permet pas de lister ces fichiers 'cachés' avec le reste et je dois utiliser /s pour avoir un chemin complet, ce qui est bien sûr non récursif.

J'ai aussi joué avec la version Windows de la commande ls et là non plus aucune chance. Pour afficher le chemin complet, vous devez ajouter un astérisque (mydir\*) à la fin du répertoire que vous listez, mais cela le rend récursif.

13
rsk82

Si vous ne souhaitez rien installer, vous pouvez également utiliser la commande suivante:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

Vous devez d'abord placer cd dans le répertoire, sinon cela ne fonctionnera pas.

9
Dennis

Essayez la commande suivante:

dir /s /b /a

Il donnera TOUS les fichiers, vous pouvez le lancer via FIND si vous le souhaitez ou ajouter un nom de dossier.

17
bjkamp

Si vous avez essayé ls, pourquoi ne pas installer cygwin? Vous pouvez utiliser find dans cygwin:

find -name "*"

Si vous installez cygwin et que vous voulez utiliser find dans cygwin, assurez-vous que la recherche dans cygwin est appelée en utilisant chemin complet ou insérez chemin bin cygwin avant system32 car Windows dispose également d'un find.exe.

1
Codism

C'est une vieille question, mais je pensais ajouter quelque chose de toute façon.

DIR ne parcourt pas correctement toutes les arborescences de répertoires souhaitées, en particulier celles de C :. Il abandonne simplement à certains endroits en raison de différentes protections.

ATTRIB fonctionne beaucoup mieux, car il en trouve plus. (Pourquoi cette différence? Pourquoi MS voudrait-il faire fonctionner un utilitaire d'une manière et une autre à cet égard? Damned si je le sais.) D'après mon expérience, le moyen le plus efficace de gérer cela, bien que ce soit un kludge, consiste à obtenir deux listes:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

et obtenez la différence entre eux. Cette différence est les répertoires sur C: (sauf ceux qui sont trop bien cachés). Pour C :, je faisais généralement cela en tant qu'administrateur.

0
djc

Je voulais travailler avec une liste de répertoires, alors j'ai cherché dans Google "Imprimer un répertoire". J'ai trouvé des instructions pour le faire, mais elles incluaient des modifications au registre. Ne voulant pas jouer avec cela, et vouloir utiliser une liste, pas l'imprimer, j'ai trouvé un moyen d'atteindre mes objectifs sans changer le Registre. J'ai créé deux programmes de traitement par lots à enregistrer dans un répertoire d’utilitaires. Ensuite, lorsque je souhaite imprimer ou utiliser un répertoire, je copie simplement le fichier de commandes approprié dans le répertoire de sujet, puis je l'exécute! Les voici:

rem PrintThisDirectory.bat
rem Prints the directory where it resides
@echo off
dir %1/-p/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"

Rem ShowThisDirectory.bat
Rem Displays in Notepad the Directory where it resides
@echo off
dir %1/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"
0
Roger Bohl

vous pouvez télécharger sed avec gnuwin32. Cela ajoute le répertoire en cours.

Faire% cd% ne fonctionne pas .. donc %cd:\=\\% convertit chaque \ en \\, ce qui donne \.

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins
0
barlop