web-dev-qa-db-fra.com

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

doublon possible:
Obtenir des noms de fichiers nus de manière récursive dans la commande Invite

Je voudrais lister de manière récursive tous les fichiers d'un répertoire, en affichant uniquement les noms de fichiers (sans extensions et sans les chemins d'accès complets). J'utilise Windows/DOS.

Le plus proche que j'ai pu obtenir avec dir était dir /s /b, mais il répertorie les chemins d'accès complets et affiche également les extensions.

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

Des idées?

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

Si vous avez besoin de sauvegarder la liste dans un fichier, ajoutez >> C:\Path\To\list_file.txt à la fin de la commande for.

Si vous finissez par vouloir les extensions, changez %~ni en %~nxi

Pour utiliser dans un fichier de commandes, modifiez tous les % en %%

27
afrazier

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

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

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.

5
David Remy

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
}
3
OldWolf