我想将我的批处理脚本的第一个参数用作变量。如果它包含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作为参数时起作用但我的变量没有更新。但是参数是空的,它不起作用(即不要求我填充变量)。
答案 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
状态)