如何在DOS中进行字符串比较条件?

5

哇,从来没想过我会在DOS中写任何东西。现在我这么做了,我知道为什么我从不想这样做了。语法太荒谬了!

无论如何,我需要帮助。 我想提示用户输入,如果收到空行,我想使用默认值,像这样:

set name=abraham.
set /p input=please enter your name, press enter to use %name%:
if not %input%=="" set name=%input%
echo your name is %name%

我遇到了一个错误,提示说"set was unexpected at this time."

请问您能帮忙解决吗?


我只是好奇,为什么你突然必须在DOS下编程?难道你不能写一个Java/C#/等控制台程序吗?那样会容易得多。 - Kirk Woll
它用于自动化项目部署,该部署涉及许多步骤,由于安全和地理原因,有时我们不得不通过电话指导客户完成部署。 - Haoest
3个回答

9

尝试

set name=abraham
set /p name=please enter your name, press enter to use %name%:

echo entered : %name%

请注意,在cmd文件中,如果未输入任何内容,则变量不会更改。
或者,使用if语句:
set name=abraham
set input=
set /p input=please enter your name, press enter to use %name%:
if "%input%" NEQ "" set name=%input%
echo entered : %name%

注意if语句中input周围的引号,并且请注意在运行之前清除输入(否则它将保留用户未输入任何内容时的最后一个值)


哦,我的天啊!我应该在投入这么多时间之前先发布问题。谢谢! - Haoest

2

在shell编程中,空字符串实际上是空的,因此请尝试使用带引号的if "%input%"=="" set...if %input%== set...(空字符串就是空的)。


抱歉使用了lolcat的参考,但我实在忍不住>_< - mafu

1

我相信你需要在变量周围加上单引号(不确定双引号或单引号有何区别):

@echo off
set name=abraham.
set /p input=please enter your name, press enter to use %name%:
if not '%input%'=='' set name=%input%
echo your name is %name%

pause

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接