繁体   English   中英

变量上的批处理脚本条件

[英]batch script conditions on variables

我想将批处理脚本的第一个参数用作变量。 如果包含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

我懂了

命令的语法不正确

而且最后我的echo不会打印该值(当我删除ifs时),它仅显示echo已关闭。

我从.bat文件开始,我只尝试了isEmpty测试(从此处获取: 测试批处理文件中变量是否为空的正确方法是什么? ),它也不起作用。

你知道为什么吗 ?

更新:当我将FULL作为参数传递但我的变量未更新时,它可以工作。 但是,如果参数为空,则不起作用(即不要求我填充变量)。

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

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

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

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

因此,首先,消除所有不必要的空间。

set NeedToPassTheTests = 1

删除空格。 批处理是对分配的OTH两侧空间敏感-你是一个名为“NeedToPassTheTests 空间 ”变量设置为“ 太空 1”的值

要测试变量var是否为空:

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

怪癖:

echo(%var%

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM