Batch file 批次;如果;语句,仅在输入文本时执行操作,否则执行其他操作

Batch file 批次;如果;语句,仅在输入文本时执行操作,否则执行其他操作,batch-file,input,user-input,Batch File,Input,User Input,我有一个包含用户输入的批处理脚本: set /p serverstart=Starter Path (or leave blank if unknown): 现在需要做的是,如果用户输入某个内容(任何内容),它将转到特定的标签: if %serverstart% == [anything] goto %serverstart% :%serverstart% java -Xmx1024M -Xms1024M -jar %serverstart%.jar nogui 但前提是用户输入了一些东西

我有一个包含用户输入的批处理脚本:

set /p serverstart=Starter Path (or leave blank if unknown): 
现在需要做的是,如果用户输入某个内容(任何内容),它将转到特定的标签:

if %serverstart% == [anything] goto %serverstart%
:%serverstart%
java -Xmx1024M -Xms1024M -jar %serverstart%.jar nogui
但前提是用户输入了一些东西。如果用户将字段留空,则文件需要继续:

set /p serverstart=Starter Path (or leave blank if unknown): 
:serverram
cls
set /p serverram=Server RAM: 
[enter more code here]
因此,如果用户输入某个内容,它将转到定义的用户标签,并启动%serverstart%.jar,但如果用户将字段留空,它将不执行任何操作并继续。将:

set /p serverstart=Starter Path (or leave blank if unknown): 
if %serverstart% == "" goto %serverstart%
goto serverram
:serverram
set /p serverram=Server RAM: 

:%serverstart%
java -Xmx%serverram%M -Xms%serverram%M -jar %serverstart%.jar nogui
工作

(以防万一,这是目前为止的完整代码)

当然,如果没有定义serverstart…,您也可以使用


记住-
设置/p`之前将变量设置为空(
设置“var=”),否则它将与之前的任何值保持不变。

我会将其转过来:

if not "%serverstart%" == "" (
  we have input-code
) ELSE (
  we have NO input-code
)

编辑

@Stephan:正如你所说。抢手货点不是必需的:
如果不是“%serverstart%”==“”(
将始终有效。“我现在真的不知道什么时候,但有时会修剪前导空格”.你有任何例子可以证明这一点吗?发表基于假设的建议不是一个好主意…编辑。目前还没有一个例子。它有时出现在工作中,我正在用批处理做很多事情,下次出现时,我会把它写下来,然后回到这里^。^;)
if defined serverstart goto (wehaveinput) else (goto wedonthaveinput)
if not "%serverstart%" == "" (
  we have input-code
) ELSE (
  we have NO input-code
)