
「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
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- ローカル設定- バッチ ファイル内の環境変数の可視性を制御するオプションを設定します。
答え2
一度に 1 つずつアクセスするのではなく、一覧表示するだけの場合は、次のコマンドを使用します。
cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"
これを詳しく説明すると、次のようになります。
- ドライブのルートに移動します (このコマンドは一度に 1 つのドライブのみをスキャンします)。
- コマンドを使用して
dir
、「temp」という名前のものを検索します。 - 属性「ディレクトリ」(つまり、フォルダー)を持っている必要があります。
- 出力を「生の」形式、つまりファイル名(またはこの場合はフォルダ名)のみで表示します。
- 現在のディレクトリから開始し、すべてのサブディレクトリもチェックします (これが、ドライブのルートからコマンドを実行した理由です)。
- 出力をファイルにリダイレクトします (後ですべてを読みやすくするため)。
- このファイルをユーザー プロファイルの下のデスクトップ フォルダーに配置します (
%USERPROFILE%
はプロファイルへのパスに展開されます。 のようになりますC:\Users\username
)。 - 先ほど書き出したファイルをデフォルトの .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