Windows

需要從 Batch For 循環中排除特定結果

  • July 13, 2009

我有一個腳本,它使用 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 {} ; 可能會做你想做的事。

引用自:https://serverfault.com/questions/40090