[英]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.