3

フォルダーの内容を名前のリストに出力するバッチ ファイルを作成しました。

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

file_list.txt を「ディレクトリ名」.txt にするにはどうすればよいですか?

たとえば、私はフォルダー ABC にいて、最終的なテキスト ファイルの名前が file_list.txt ではなく ABC.txt になるようにディレクトリ リストを出力したいと考えています。

編集: Alconja に感謝します。完璧に動作します。これは情報と学習のサイトなので、追加するパラメーターを説明するために回答を拡大していただけませんか?

4

2 に答える 2

2

ここでの議論に基づいて、私はこれがあなたが求めているものだと思います:

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

簡単なテストを行い、あなたが望むことをしているようです

...現状のまま提供/保証なし/など:)

于 2009-04-03T05:16:04.450 に答える
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 の答えは正しいです。明らかに、バッチ スクリプトの拡張機能を使用すると、これが可能になります。( ~f も理解できるようになりました)。したがって、sed はもう必要ありません。これは次のようになります。

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

おそらく、ディレクトリを変更するため、出力パスまたは dir コマンドに %1 は必要なく、パスを %1 に置き換えることができるはずなので、試すことができます (未テスト):

@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt
于 2009-04-03T04:56:07.807 に答える