批次檔從搜尋中排除某些目錄

批次檔從搜尋中排除某些目錄

我正在運行這個小範例腳本:

getConfs.bat myconfig.conf

getConfs.bat 看起來像這樣:

set home_dir=C:\Program Files\myApp
set dontSearchLoc="%home_dir%\confs\users" "%home_dir%\confs\system\home"    
call :getFiles

:getFiles
for /R "%home_dir%"\confs\ %%f IN (%~1) do (
        FOR %%a IN (%dontSearchLoc%) DO (
         echo "%%f"
         echo "%%a\%%~nxf"
         If %%f=="%%a\%%~nxf" (
          echo Yes
         ) else (
            echo No>> NUL 2>&1 )
        )
)
exit /B

這樣做的問題是字串永遠不會匹配,即使檔案「myconfig.conf」確實存在於其中一些位置中。

我得到這些回報:

"C:\Program Files\myApp\confs\tests\myconfig.conf"    

""C:\Program Files\myApp\confs\tests"\myconfig.conf"

顯然,從文字字串比較來看,它們不匹配。但從邏輯上講,從路徑的角度來看,它們確實如此。我覺得我只是以錯誤的方式處理這件事,或者我不理解這些引語以及如何正確地逃避它們。

任何幫助,將不勝感激。

相關內容