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