2014-01-03 3 views
0

У меня есть две переменные, а именно DOW и RxDow, где% DOW% - «Fri» (текущий день недели) и% RxDow% - «Mon, Wed, Fri», (Назначенные дни недели)DOS Batch File: Поиск переменной в переменной

, когда я пытаюсь использовать следующую команду он не работает

find /f %DOW% in %RxDow% do (echo exec spreindexusertables >> back.sql) 

это говорит

в был неожиданным в это время.

Мне нужна команда, которая будет искать% DOW% в% RxDOW% и, если она найдена, возвращает требуемую команду в back.sql. Пожалуйста помоги.

С уважением,

+3

Какую версию Windows вы используете? В Windows 8.1/F недействительный переключатель для Find. Вы на самом деле используете FOR? Если да, напишите свой * точный * код ...! –

ответ

0

Если я вас правильно понял, вы хотите написать EXEC spreindexusertables в back.sql если день будний день. Верный? Если да, то следующий должен получить вас там:

@echo off 
setlocal 

set "dow=Fri" 
set "RxDow=Mon,Tues,Weds,Thurs,Fri" 

for /f "tokens=1 delims=," %%a in ('echo %RxDow%^|Find /i "%dow%"') do (echo exec spreindexusertables >> back.sql) 
+0

Спасибо! Работал отлично и получил точные результаты, которые мне нужны. Еще раз спасибо! – AmitGogna

1

Вы можете сделать это, пытаясь удалить %DOW% значение из %RxDOW% переменной; если результат отличается от, чем оригинал %RxDOW% переменная, то %DOW% находится там. Этот метод не требует никакой внешней команды, например find.exe.

@echo off 
setlocal EnableDelayedExpansion 

set "DOW=Fri" 
set "RxDow=Mon,Wed,Fri" 

if "!RxDow:%DOW%=!" neq "%RxDow%" echo exec spreindexusertables >> back.sql 
0

Использование & & оператора, который выполняет вторую команду является первой один не имеет ошибки.

set "dow=Mon" 
set "RxDow=Mon,Tues,Weds,Thurs,Fri" 

(echo %RxDow% | find "%dow%">nul) && (echo exec spreindexusertables >> back.sql) 
Смежные вопросы