2009-04-03 1 views
3

Ich habe eine Batchdatei erstellt, um einen Ordnerinhalt in eine Liste von Namen auszugeben.Wie Ausgabedateiname gleich dem Ordnernamen gemacht wird

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

Wie kann ich die file_list.txt zu sein "dir Namen" .txt machen?

Zum Beispiel bin ich im Ordner ABC und ich möchte die dir die Liste ausgegeben, so dass die endgültige Text Datei mit dem Namen wird abc.txt statt file_list.txt

Edit: Dank Alconja, es funktioniert perfekt. Da es sich um eine Informations- und Lernseite handelt, würden Sie gerne Ihre Antwort erweitern, um die Parameter zu erläutern, die Sie hinzufügen?

Antwort

2

auf der Grundlage der Diskussion here, ich denke, das ist, was Sie nach:

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

es Gave ein schneller Test & scheint zu tun, was Sie wollen

... vorausgesetzt, wie/keine Garantie/etc :)

+0

Cool, ich bin nicht an diese Erweiterungen gewöhnt. –

1

Ich glaube nicht, dass es einen einfachen Weg gibt, nur den letzten Teil des aktuellen Pfades in nur Batch-Scripting zu bekommen.

Aber, wenn Sie sed auf Ihrem Rechner haben, wird es relativ einfach:

@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 

Korrektur: Alconja's answer korrekt ist. Offenbar ist dies mit den Erweiterungen zum Batch-Scripting möglich. (Ich verstehe jetzt auch die ~ f). So müssen Sie nicht mehr sed müssen, und dies reduziert auf:

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

Argumentieren, da Sie Verzeichnis zu ändern, brauchen Sie nicht die% 1 in den Ausgabepfad oder dem Befehl dir, und Sie sollten nur fähig sein% 1 für den Pfad zu ersetzen, Sie können so versuchen (ungetestet):

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

Es funktioniert perfekt. Ich habe es im "SendTo" Kontextmenü gespeichert. – qwertyuu