回答:
次のコマンドを使用します。
dir /b /a /s
出力をファイルに保存する必要がある場合は、次を使用できます。
dir /b /a /s >> list_of_names.txt
編集実際、上記の解決策は元の質問の目標に到達しません。この質問から気づいたことの1つは、投稿が再帰的なリストを要求していることです。他の回答にはないため、他の回答者の回答に「/ s」を追加するとうまくいくと思います
for /f %a in ('dir /b /s') do @echo %~na
これを試して:
for /f "delims=" %a in ('dir /b /s') do @echo %~na
forの動作とその動作に関する詳細、タイプ for /?
>> filename.txt
for /r %i in (*) do @echo %~ni
または
forfiles /s /c "cmd /c if @isdir==FALSE noquotes.bat @fname"
このコンテンツを持つ%PATH%のファイルnoquotes.bat
を想定
@echo %~1
/ rアプローチの説明
for /r
現在のディレクトリを再帰的にウォークし(ディレクトリを指定できます。for /r drive:\path\
現在のディレクトリが想定されます)、setで一致した各ファイルに対してdoで指定されたコマンドを実行します(*)
。セット(.)
はディレクトリのみに一致します。@echo%〜niこのコマンドは、プロンプトからそのまま機能します。バッチファイル内に引用符を配置する場合は、引用符を2倍にします。すなわちfor /r %%i in (*) do @echo %%~ni
forfilesアプローチの説明
/s
現在列挙して、すべてのサブディレクトリには、
/c
引用符内のコマンドを実行
@isdir
し、@fname
コマンド文字列の中に放出されたシンボルである
余分なバッチファイルはnoquotes.bat
%〜1(パラメータ1)と二重引用符をストリッピングすることによりことができます
forfiles
また、あなたがで開始するパスを指定することができますがforfiles /P C:\Windows ...
属性(ディレクトリではなく)を使用して、すべてのファイルを裸で再帰的に一覧表示します(ファイルのみ)
dir / B / S / A:-D
C:\ test \ cache> dir / B / S / A:-D
C:\ test \ cache \ 7 \ 0f \ 7b50ed0522645513da90345120eaf0f7 C:\ test \ cache \ d \ 23 \ 814644aa6a8195c91e54d2f7bb64e23d
dir /b /s
再帰的にスキャンしようとしたとき、ファイル名の前にファイルパスも取得したので、これは望ましくありません。」 OPがそれを試みたときと同じ結果(つまり、彼らが望むものではない)を生成すること。