
我有幾個名為“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 cmd 行相關的所有內容的絕佳參考。
- 設定本地- 設定選項來控制批次檔中環境變數的可見性。
答案2
如果您只想列出它們,而不是一次訪問它們,請使用以下命令:
cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"
分解一下:
- 轉到磁碟機的根目錄(此指令一次只會掃描一個磁碟機)。
- 使用該
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-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.