Пожалуйста, прости меня, если это кажется очевидным, но у меня такое поведение для цикла for, который просматривает определенные именованные каталоги (US_Site4 и т. Д.) И считывает файл конфигурации в каждом из них, чтобы запустить команду отдельно для каждого:
setlocal enabledelayedexpansion
REM The Root to start searching from
SET "InstallSets=D:\InstallSets"
REM Folders to not search with in
SET "ExcludeStr=findstr /I /v ^"\Master Files \Training \Software^""
REM
SET "InstallSets=D:\InstallSets"
for /f "delims=*" %%F IN ('dir /s /b /on "!InstallSets!" ^| findstr /E /C:"Config.xml" ^| !ExcludeStr!') do (
(ECHO "%%F"| findstr /I "\US_Site4 \US_Site5" 1>NUL) && (
ECHO "%%F"...
)
)
И я хотел бы иметь возможность репликации более настраиваемым пользователем способом для добавления в будущем, то есть настройки переменной в верхней части командного файла, например ::
setlocal enabledelayedexpansion
REM The Root to start searching from
SET "InstallSets=D:\InstallSets"
REM Folders to not search with in
SET "ExcludeStr=findstr /I /v ^"\Master Files \Training \Software^""
REM Folders to search in only
SET "DoOnlyStr=findstr /I ^"\US_Site4 \US_Site5^" 1>NUL"
for /f "delims=*" %%F IN ('dir /s /b /on "!InstallSets!" ^| findstr /E /C:"Config.xml" ^| !ExcludeStr!') do (
(ECHO "%%F"| %DoOnlyStr%) && (
ECHO "%%F"...
)
)
Первый возвращает 2 результата, которые являются site4 и 5, как и ожидалось, однако второй возвращает 4 (2, который я хотел, но дублировал). Почему это так и как можно получить «удобную для пользователя» настраиваемую версию, например, просто установить переменную? Затем я хочу сделать второй файл с findstr /I /V
, чтобы сделать обратное, и сделать все остальное, НО Site4 и 5.
С уважением
Адам