Windows
需要從 Batch For 循環中排除特定結果
我有一個腳本,它使用 FOR 循環將文件從特定目錄(和子目錄)遞歸載入到 java 類路徑中。它看起來像這樣:
FOR /r目錄%%F IN (*.jar) DO call :addcp %%F
不幸的是,我現在需要從結果中排除一個特定的子目錄(我不想載入一些 jar 文件)。我嘗試在 FOR 循環內嵌套一個 IF 語句,但沒有任何成功。
不幸的是,更改腳本語言不是一種選擇,並且迭代每個子目錄將是維護的噩夢。有沒有人有辦法做到這一點?
我試過類似的東西:
FOR /r目錄%%F IN (
*
.jar) DO IF %%F==*
字元串*
DO call :addcp %%F但它沒有用。
這是一個腳本,用於轉儲“%ProgramFiles%”下所有 EXE 文件的絕對路徑列表,但“Windows NT”子目錄中的那些文件除外。我認為你可能會因為你正在尋找的東西而擊敗它。
@echo off for /f "usebackq delims=" %%i in (`dir "%ProgramFiles%\*.exe" /s /a /b`) do call :checkit "%%i" goto end :checkit echo %1 | find /i "%ProgramFiles%\Windows NT\" >NUL 2>NUL if errorlevel 1 echo %~1 :end
我會推薦find,看看man find。類似 find “%ProgramFiles%" -iname " .exe” !-regex “%ProgramFiles%\folder_to-exclude. $” -exec call :addcp {} ; 可能會做你想做的事。