变量的批处理脚本条件

时间:2017-03-16 13:40:27

标签: windows batch-file cmd

我想将我的批处理脚本的第一个参数用作变量。如果它包含FULL,我会将所有变量设置为1,如果它是空的,我会要求每个变量。

但我无法使我的代码正常工作:

 @echo off
        color 02

    ::-----------------------------------------
    :: Variables
    set Preset=%1 
    set Profile=%2 
    set NeedToPassTheTests=1
    set PublishAPI=0

    REM ---------------------
REM We fill the variables depending on the arguments
echo(%1
if defined Preset (

if "%Preset%"=="FULL" (
echo FULL
set PublishOCPP=1
set NeedToPassTheTests=1 
set PublishAPI=1
)

) else (
    REM No preset so we are going to ask
    set /p PublishAPI="Publish API ? (0 or 1).............. ? "
    set /p NeedToPassTheTests="Test the projects before ? (0 or 1).............. ? "
)


echo NeedToPassTheTests %NeedToPassTheTests% 
echo %PublishAPI%

echo.
pause

我得到了

  

该命令的语法不正确

最后我的回声不是打印值(当我删除我的ifs时)它只显示回声关闭。

我从.bat文件开始,我已经尝试过只有空测试(取自这里:What is the proper way to test if variable is empty in a batch file?)并且它也不起作用。

你知道为什么吗?

更新: 它在我传递FULL作为参数时起作用但我的变量没有更新。但是参数是空的,它不起作用(即不要求我填充变量)。

2 个答案:

答案 0 :(得分:1)

我不确定代码中有哪些错误,但我可以在一秒钟内看到几个错误。

set NeedToPassTheTests=1会将名为NeedToPassTheTests的变量设置为值1

set NeedToPassTheTests<space>=1会将NeedToPassTheTests<space>设置为1

set NeedToPassTheTests<space>=<space>1会将NeedToPassTheTests<space>设置为<space>1

首先,摆脱任何不必要的空间。

答案 1 :(得分:0)

set NeedToPassTheTests = 1

删除空格。批处理对作业的 oth 侧的空格敏感 - 您正在设置一个名为&#34; NeedToPassTheTests space &#34;的变量。值为&#34; space 1&#34;

测试变量var是空的:

if defined var (echo variable is not empty) else (echo variable is empty)

夸克:

echo(%var%
如果变量不为空,

将显示变量,如果变量是空的,则显示空行(不是echo状态)