2009-04-03 16 views
3

バッチファイルを作成して、フォルダの内容を名前のリストに出力しました。出力ファイル名をフォルダ名と同じにする方法

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

file_list.txtを「dir name」.txtにするにはどうすればよいですか?最終テキストファイルではなく

file_list.txt編集のABC.txt命名されるように

例えば、私は、フォルダABCで午前と私はdirのリストを出力したい: おかげAlconja、それが完璧に動作します。これは情報と学習サイトなので、追加するパラメータを説明するために答えを広げてもよろしいですか?

答えて

2

議論hereに基づいて、私は、これはあなたが後にしているものだと思う:

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

はそれを与えましたクイックテスト&は/無保証の/ etcそれは完璧に動作します:)

+0

クール、私はそれらの拡張に慣れていません。 –

1

バッチスクリプトでは、現在のパスから最後の部分だけを取得する簡単な方法はないと思います。

しかし、あなたはあなたのマシン上でsedを持っている場合、それが比較的容易になる:

@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 

は訂正:Alconja's answerが正しいです。明らかに、バッチスクリプトの拡張が可能です。 (私は今、〜fも理解しています)。だから、あなたはもうsedを必要としない、これはに削減:あなたはディレクトリを変更するので、あなたは、出力パスまたはdirコマンドで%1を必要としない、とあなただけのはず、間違いなく

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

あなたが(未テスト)試すことができますので、パスに%1を代用することができる:

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

あるとして提供...あなたは

やりたいようです。私はそれを "SendTo"コンテキストメニューに保存しました。 – qwertyuu

関連する問題