DOS批处理文件:在变量中搜索变量

时间:2014-01-03 10:51:01

标签: variables search batch-file

我有两个变量,即DOW和RxDow,其中%DOW%为'周五'(本周当前日),%RxDow%为'周一,周三,周五'(本周指定日期)

当我尝试使用以下命令时,它不起作用

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

它说

  

在这个时候出人意料。

我需要一个命令来搜索%RxDOW%中的%DOW%,如果找到,则将所需命令回显到back.sql。请帮忙。

此致

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

答案 2 :(得分:0)

使用&&执行第二个命令的运算符是第一个没有错误的运算符。

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

(echo %RxDow% | find "%dow%">nul) && (echo exec spreindexusertables >> back.sql)