特定のフォルダをすべて検索するバッチ

特定のフォルダをすべて検索するバッチ

「temp」という名前のフォルダーがいくつかあり、それらを見つけることはできますが、アプリケーションを実行すると、最初のインスタンスのみが表示されます。他のインスタンスを表示するにはどうすればよいでしょうか?

@echo off
for /d /r "c:\" %%i in (temp) do @if exist "%%i" set path=%%i
echo %path%
pause :: Pause the app.

答え1

他の人に見せるにはどうすればいいでしょうか?

echoループ内forとテスト内で実行する必要があります。ifそうしないと、echo最後の一致のみが実行されます。

加えて:

  • path変数として使用しません(PATHはすでに定義されている環境変数です)。
  • 代わりに変数に名前を付けます_somename(先頭に付けると、_既存の環境変数との名前の衝突が防止されます)。
  • setlocal変数が親コマンド プロンプトに漏れるのを防ぐために使用することをお勧めします。
  • ループのたびにset setlocal enabledelayedexpansion更新された値が適用されるように、を使用する必要があります。echo

次のバッチファイルを試してください。

@echo off
setlocal
setlocal enabledelayedexpansion
@echo off
for /d /r "c:\" %%i in (temp) do (
  @if exist "%%i" (
    @set _variable=%%i
    @echo !_variable!
    )
  )
endlocal

参考文献

答え2

一度に 1 つずつアクセスするのではなく、一覧表示するだけの場合は、次のコマンドを使用します。

cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"

これを詳しく説明すると、次のようになります。

  1. ドライブのルートに移動します (このコマンドは一度に 1 つのドライブのみをスキャンします)。
  2. コマンドを使用してdir、「temp」という名前のものを検索します。
  3. 属性「ディレクトリ」(つまり、フォルダー)を持っている必要があります。
  4. 出力を「生の」形式、つまりファイル名(またはこの場合はフォルダ名)のみで表示します。
  5. 現在のディレクトリから開始し、すべてのサブディレクトリもチェックします (これが、ドライブのルートからコマンドを実行した理由です)。
  6. 出力をファイルにリダイレクトします (後ですべてを読みやすくするため)。
  7. このファイルをユーザー プロファイルの下のデスクトップ フォルダーに配置します (%USERPROFILE%はプロファイルへのパスに展開されます。 のようになりますC:\Users\username)。
  8. 先ほど書き出したファイルをデフォルトの .txt エディター (通常はメモ帳) で開きます。

私のマシンでこれらのコマンドを実行した結果の例:

C:\$Recycle.Bin\S-1-5-21-1498554065-3975735064-3637327715-1001\$RBC5Q5G\Temp C:\KDE\Temp C:\Program Files (x86)\Android\android-sdk\temp C:\ProgramData\Microsoft\IdentityCRL\production\temp C:\ProgramData\Microsoft\RAC\Temp C:\Users\All Users\Microsoft\IdentityCRL\production\temp C:\Users\All Users\Microsoft\RAC\Temp C:\Users\cbhacking\AppData\Local\Temp C:\Users\cbhacking\AppData\Local\Google\Chrome\User Data\Default\Extensions\Temp C:\Users\cbhacking\AppData\Local\Microsoft\MSOIdentityCRL\production\temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\14.0\SyncSettings\1733649840\Temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\SyncSettings\1206173302\Temp

関連情報