好的,所以我不确定这里发生了什么。我希望第二组眼睛显而易见。我正在执行一个If语句,无论如何都得到相同的结果......
if \%3\==\\ (set filter=FullExclude.txt) else (set filter=%3)
if %filter%==%3 (set output = CustomDiffData) else (set output = USERDATA)
echo %output%
参数3正在custom.txt中输入
所以第一个如果应该有false并且filter设置为custom.txt,则会通过echo确认。
接下来如果应该是true,因为custom.txt = custom.txt ...这是事情变得奇怪的地方因为输出回声USERDATA 如果我这样做,甚至更奇怪:
if %filter%==%3 (set output = USERDATA) else (set output = CustomDiffData)
echo %output%
我仍然收到USERDATA回复。
为什么会这样?
这是我脚本的顶部减去两个只是结束脚本的空参数检查。
答案 0 :(得分:2)
主要问题是set output =...
使用名为output<space>
而非output
的变量。
您应该避免批处理文件中的(不必要的)空格。
另一个问题可能在if \%3\==\\
行,因为%3可能包含空格或特殊字符,这会因批处理错误而失败。
最好使用像这样的引号
if“%~3”==“”(设置filter = FullExclude.txt)else(设置“filter =%~3”)
为避免第二次比较,您可以将代码更改为
if "%~3"=="" (
set filter=FullExclude.txt
set output=USERDATA
) else (
set "filter=%~3"
set output=CustomDiffData
)
echo %output%