2009-04-03 8 views
3

J'ai créé un fichier de commandes pour afficher le contenu d'un dossier dans une liste de noms.Comment faire pour que le nom du fichier de sortie corresponde au nom du dossier

@echo off 
cd /d %1 
Title %~f1 
dir %1 /b /l > %1\..\file_list.txt 

Comment est-ce que je peux faire le file_list.txt pour être "dir name" .txt?

Par exemple, je suis au dossier ABC et je veux la liste de sortie dir afin que le fichier texte final sera nommé abc.txt au lieu de file_list.txt

Edit: Merci Alconja, il fonctionne parfaitement. Puisqu'il s'agit d'un site d'information et d'apprentissage, pourriez-vous élargir votre réponse pour expliquer les paramètres que vous ajoutez?

Répondre

2

sur la base de la discussion here, je pense que c'est ce que vous êtes après:

@echo off&setlocal enableextensions 
Title %~f1 
for %%* in (%1) do set MyDir=%%~n* 
dir %1 /b /l > %1\..\"%MyDir%.txt" 
endlocal&goto :eof 

lui a donné un test rapide & semble faire ce que vous voulez

... à condition que est/aucune garantie/etc :)

+0

Cool, je ne suis pas habitué à ces extensions. –

1

Je ne pense pas qu'il existe un moyen facile d'obtenir seulement la dernière partie du chemin actuel dans les scripts par lots.

Mais, si vous avez sed sur votre machine, il devient relativement facile:

@echo off 
cd /d %1 
Title %~f1 
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt 

Correction: Alconja's answer est correcte. Apparemment avec les extensions de script par lots, c'est possible. (Je comprends maintenant le ~ f aussi bien). Donc, vous n'avez plus besoin sed, ce qui réduit à:

@echo off 
cd /d %1 
Title %~f1 
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt 

On peut dire que, depuis que vous changez le répertoire, vous n'avez pas besoin% 1 sur le chemin de sortie ou la commande dir, et vous devriez juste être en mesure de remplacer% 1 pour le chemin, afin que vous puissiez essayer (non testé):

@echo off 
cd /d %1 
Title %~f1 
dir /b /l > ..\%~n1.txt 
+0

Il fonctionne parfaitement. Je l'ai sauvegardé dans le menu contextuel "SendTo". – qwertyuu

Questions connexes