
Я запускаю этот небольшой пример скрипта:
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"
Очевидно, что при буквальном сравнении строк они не совпадают. Но логически с точки зрения пути они совпадают. Мне кажется, что я просто иду не тем путем или не понимаю кавычки и как их правильно экранировать.
Любая помощь будет оценена по достоинству.