BATCH:如果“String”等于“=”

时间:2016-02-05 09:26:18

标签: batch-file

我有一个文本文件,我想检查一个字符串不包含“=”符号。我发现很难弄清楚如何在BATCH脚本中将“=”设置为变量。我已经尝试设置MDSSTR = %% =和=“%% =”无效

我想要做的一个例子如下:

//example
set MDSStr="="
set mdsvar="Hello=World" 
if NOT %mdsvar% == %MDSStr% ( Do Something)

有谁知道如何使“=”符号成为字符串?提前谢谢。

3 个答案:

答案 0 :(得分:3)

@ECHO OFF
SETLOCAL
set "MDSStr=="
set "mdsvar=Hello=World" 
set "mdsvar2==Hello World" 
set "mdsvar3=Hello World=" 
set "mdsvar4=Hello=====World" 
set "mdsvar5======Hello World" 
set "mdsvar6=Hello World=====" 
set "mdsvar7=Hello World" 

SET mds
ECHO --------------------------------------------------------------------
FOR /f "tokens=1*delims==" %%a IN ("x%mdsstr%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar2%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar3%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar4%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar5%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar6%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)
FOR /f "tokens=1*delims==" %%a IN ("x%mdsvar7%x") DO IF "%%b"=="" (ECHO no "=") ELSE (ECHO "=" found)

GOTO :EOF

这演示了一种检测字符串中=的存在的方法。

mds开始的变量被设置为包含=的各种字符组合 - 一些在开头,一些在结尾,一些在中间。最后一个变量设置为包含=

然后显示mds变量中设置的值,并为报告处理每个值。

不幸的是,您似乎解释了 您想要做什么,但不是 您要做的事情。也许它只是find out whether the string contains "=",但这似乎被要求变量值 =

所掩盖

答案 1 :(得分:0)

你需要逃避=。尽量这样做^=

答案 2 :(得分:0)

要在字符串中加上“=”,请执行以下操作:

set "MDSStr=="

回显你的字符串并将输出传递给find命令,找到只显示不包含find字符串(=)的行:

set "MDSStr=="
set mdsvar="Hello=World" 
echo(%mdsvar% | find /v "%MDSStr%"