【问题标题】:How to assign a value to a variable and check if it is empty in Windows batch program?如何在 Windows 批处理程序中为变量赋值并检查它是否为空?
【发布时间】:2012-09-09 20:22:33
【问题描述】:

这是我写的代码:

 @echo off
:top
set chkScheduleTime=""
set chkScheduleName=""


set /p scheduleName=Enter the name of the schedule?
cls
set /p scheduleTime=Enter the time to schedule task?
cls


set chkScheduleTime=%scheduleTime =%
set  chkScheduleName=%scheduleName =%

IF /I "%chkScheduleName%"=="" ( 
    set errorMessage=*Name of schedule required 
)


IF /I "%chkScheduleTime%"=="" (
    set errorMessage=%errorMessage% *Time of schedule required 
)

IF NOT defined "%errorMessage%" (

    echo %errorMessage%
    pause
    cls
    goto top
)




echo Schedule Name %scheduleName% 
echo.
echo Time: %scheduleTime%


:end

我要做的是从用户那里接受两个参数,即任务计划名称和任务时间。然后程序将检查变量是否为空并为空的变量显示错误,然后提示用户重新输入变量(如果没有输入一个或两个)。但是,即使用户输入了日程名称和时间,程序也会显示以下内容:

*需要的时间表名称 *需要的时间表时间

另请注意,以下代码部分用于帮助检查用户输入的值是否仅为空格。因此它相当于常规编程中的 Trim():

set chkScheduleTime=%scheduleTime =%
set  chkScheduleName=%scheduleName =%

【问题讨论】:

  • set chkScheduleTime=%scheduleTime =% 应该做什么?它只是在我尝试时清除 chkScheduleTime。
  • 它应该修剪变量,这样我就可以知道用户是否只输入了空格
  • 这将删除所有空格(一旦您修复了语法 - 请参阅 Neil 的答案),而不仅仅是从头到尾修剪空格。例如——“Hello world”变成了“Helloworld”。对我来说这听起来不是一个好主意,但也许它可以满足您的需求。

标签: batch-file operating-system command cmd


【解决方案1】:

你需要使用

set chkScheduleTime=%scheduleTime: =%

去除scheduleTime中的空格。

此外,您永远不会重置 errorMessage,因此一旦出现错误,它就不会消失。

另外我认为你可能想使用if defined errorMessage。

【讨论】:

  • 哦刚刚知道如何重置它的设置#varname# =
猜你喜欢
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 2017-04-02
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2021-11-08
相关资源
最近更新 更多