正如我在 Q-title 中所問的那樣,我如何遍歷整個%SYSTEMDRIVE%
根檔案夾以查找包含*Cache*
在其名稱中的任何目錄,并從內到外完全清除該目錄,但從此類遍歷洗掉中省略某些路徑,例如%APPDATA%\npm
?
我有以下命令用于遍歷和洗掉Cache
名稱中包含(不區分大小寫)的所有檔案夾并完全洗掉它們:
pushd "%SYSTEMDRIVE%"
for /d /r %%a in ("*Cache*") do if exist "%%a" ( echo "%%a" & rd /s /q "%%a" )
popd
但我想%APPDATA%\npm
完全跳過調查,我怎樣才能做到這一點?
注:作業系統:Windows 10 64Bit
uj5u.com熱心網友回復:
@ECHO Off
SETLOCAL
pushd "%SYSTEMDRIVE%\"
for /d /r %%a in ("*cache*") do if exist "%%a" ECHO "%%a"|FINDSTR /i /L /c:"%appdata%\npm\" >NUL&IF ERRORLEVEL 1 (echo delete "%%a") ELSE (echo skip "%%a")
POPD
GOTO :EOF
第一個問題:您需要到pushd
驅動器的根目錄,否則您將選擇該驅動器上當前記錄的目錄。
然后簡單地echo
查找到的目錄findstr
名來查看該名稱是否包含要排除的目錄名。該名稱需要被參考以允許包含&
. Findstr
查找與. /i
_ _ _ /L
_ appdata
附加了 subdirectotyname,并附加了一個反斜杠,使其與“...\npmnotamatch”不匹配。
如果findstr
找到匹配項,errorlevel
則設定為0
因此應跳過目錄,否則洗掉。
非常非常小心。請參閱有關目錄名的注意事項
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437658.html
上一篇:回圈訪問不同的熊貓系列以獲取請求
下一篇:我想回傳未定義但得到“{”