Batch file 如何检查批处理中的var1既不是var2也不是var3

Batch file 如何检查批处理中的var1既不是var2也不是var3,batch-file,Batch File,我有一个设置var1=value1的程序,以此类推,文件如下所示: SET var1=value1 SET var2=value2 SET var3=value3 我需要检查var1是否与var2或var3不相同,如果与var1或var2不相同,则ECHO something 我问这个是因为 IF NOT "var1"=="var2","var3" ( echo something ) 这不起作用,所以我想知道如何修复它 IF NOT "var1"=="var2" ( IF

我有一个设置var1=value1的程序,以此类推,文件如下所示:

SET var1=value1
SET var2=value2
SET var3=value3
我需要检查var1是否与var2或var3不相同,如果与var1或var2不相同,则
ECHO something

我问这个是因为

IF NOT "var1"=="var2","var3" (
     echo something
)
这不起作用,所以我想知道如何修复它

IF NOT "var1"=="var2" (
    IF NOT "var1"=="var3" (
        echo var1 is neither 2 nor 3
    )
)
首先检查var1不是var2,然后检查它也不是var3。(如果需要,可以交换var2和var3)


另外,请记住,如果要执行不区分大小写的检查(大写和小写字符视为相同),可以使用
IF/I NOT…

将值放入数组,每次输入新值时,检查该值是否已经是数组的一部分:

for(var i=0;i<array.length;i++){
    if(array[i]==value){
       //value is already set
    }
}

for(vari=0;我必须确定:您的意思是“如果它与var2或var3中的任何一个都不相似,那么…”,对吗?相似和相同是完全不同的事情;就我所关心的字符串而言,
value1
类似于
value3
,但它不一样!建议您在设置变量时,使用以下语法,
Set“var1=value1”
不幸的是,批处理没有数组的概念。还有许多其他语言,如brainfuck和Hexagony和//。我知道,用变量名模拟数组是可能的,但在不需要的时候批处理实现数组从来都不是一个好主意。此外,我们需要代码,而不是伪代码-如果你想要伪代码,请访问。谢谢他的代码现在运行得很好,我只需要根据我的偏好进行调整,多亏了很多代码是不正确的,但我已经修正了它!但是它不会进行不区分大小写的比较,比较的格式应该是,
IF/i not…
。这意味着,尽管当前代码“类似”,但
“value1”
“Value1”不一样。
@Compo感谢您缺少括号,我有点匆忙地写道。我将在回答中添加您关于不区分大小写搜索的评论。