【问题标题】:How to do string comparison condition in DOS?如何在DOS中进行字符串比较条件?
【发布时间】:2010-09-14 23:20:29
【问题描述】:

哇,从没想过我会在 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%

我收到一条错误消息,提示“此时设置是意外的。”

你能帮忙吗?

【问题讨论】:

  • 我只是好奇——你为什么突然不得不在DOS下编程?你不能只写一个Java/C#/等吗?更容易编写的控制台程序?
  • 它用于自动化一个涉及许多步骤的项目部署,由于安全和地理原因,有时我们必须通过电话指导客户进行。

标签: windows command-line dos


【解决方案1】:

试试

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

echo entered : %name%

注意,在cmd文件中,如果什么都不输入,var是不会改变的。

或者,如果:

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 语句中输入的引号,并注意我在运行前清除了输入(或者如果用户没有输入,它将保留最后一个值)

【讨论】:

  • 天哪!在我投入这么多时间之前应该发布问题。谢谢!
【解决方案2】:

空字符串在shell编程中实际上是空的,所以试试if "%input%"=="" set...(带引号)或if %input%== set...(空字符串是空的)。

【讨论】:

  • 对lolcat的参考感到抱歉,但我无法抗拒>_
【解决方案3】:

我相信您需要在变量周围加上单引号(不确定是双引号还是单引号):

@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

【讨论】:

    猜你喜欢
    • 2018-07-30
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2014-08-07
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多