批量查找所有特定資料夾

批量查找所有特定資料夾

我有幾個名為“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內部forif測試內部執行,否則您只能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

如果您只想列出它們,而不是一次訪問它們,請使用以下命令:

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

分解一下:

  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-sd C:\ProgramData\Microsoft\IdentityCRL\product\temp C:\ProgramData\Microsoft\RAC\Temp C:\Users\All Users\Microsoft\IdentityCRL\product\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\生產\臨時C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\14.0\SyncSettings\1733649840\Temp C:\Users\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\cbhacking\AppData\Local\Microsoft\VisualStudio\vshub\Settings\Syncettings.

相關內容