Comment lister récursivement les noms de fichiers (uniquement) sous DOS / Windows? [dupliquer]

19

Duplication possible:
obtenez des noms de fichiers nus de manière récursive à l'invite de commande

Je voudrais lister de manière récursive tous les fichiers d'un répertoire, en affichant uniquement les noms de fichiers (sans extension ni chemin complet). J'utilise Windows / DOS.

Le plus proche que je pouvais obtenir dirétait dir /s /b, mais il répertorie les chemins complets et montre également les extensions.

Eh bien, je pourrais peut-être vivre avec les extensions, mais je dois me débarrasser des chemins!

Des idées?

David B
la source
1
Quelle version de Windows?
OldWolf
@ OldWolf: XP. Je préfère ne pas utiliser de logiciel tiers /
David B

Réponses:

27
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

Si vous avez besoin que la liste soit sauvegardée dans un fichier, ajoutez-la >> C:\Path\To\list_file.txtà la fin de la forcommande.

Si vous finissez par vouloir les extensions, passez %~nià%~nxi

Pour utiliser dans un fichier batch, changer tous les %à%%

afrazier
la source
6
Si vous avez besoin du chemin d'accès, du nom et de l'extension, remplacez% ~ ni par% ~ pnxi
Profond
cela fonctionne mais il ne montre pas les fichiers cachés. Comment puis-je aussi voir les fichiers cachés?
ala
@ala: Si vous souhaitez afficher les fichiers cachés, vous devez utiliser quelque chose comme la réponse de David Remy uniquement avec les indicateurs appropriés passés à la dircommande.
afrazier
7

Si vous êtes prêt à charger Powershell, cette commande devrait le faire.

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
uSlackr
la source
5

Faire ce qui suit devrait vous donner ce que vous voulez:

@for /f "delims=" %a in ('Dir /s /b %systemdrive%') do echo %~na

Dirigez simplement la sortie vers un fichier et utilisez-la à partir de là si nécessaire.

David Remy
la source
3

Je ne sais pas si vous considériez qu’il s’agissait d’un logiciel tiers, car Microsoft et Microsoft sont livrés avec 7, mais powershell résoudra la plupart de vos problèmes assez facilement. Si vous ne l'avez pas déjà installé, il est disponible pour XP sur le site de Microsoft.

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
Old Wolf
la source