2017-05-02 197 views
-1

这是我的第一个问题,所以很抱歉,如果它的含义模糊。为什么不能使用此代码?

我一直在为一个可怕的程序工作,它应该是一个任务的时间表和这些任务必须完成的时间。

一切正常,但我无法弄清楚为什么这部分不起作用。

:edit    
echo Select Task   
echo (from 1 to 7)    
set /p sel= 
if %sel%=1 (goto task1) 

然后它应该带我来这里

:task1   
pause         
echo Insert Task   
echo.   
set /p task1=   
echo.    
echo Set Time   
echo.  
set /p %time1%=   
echo.    
pause 
+0

打开命令提示符窗口并运行'if /?'显示此命令的帮助。正如你可以读等号运算符是'=='而不是'='或'EQU'。另外,在使用命令__CD__切换到批处理文件的目录并通过输入其名称并按下RETURN来执行后,在命令提示符窗口中运行批处理文件时,可以在语法上看到Windows命令解释器输出的错误消息像这样的错误。双击批处理文件不适合在开发中测试批处理文件,因为控制台窗口在执行退出时自动关闭。 – Mofi

+0

另请参见至少答案的第一章[变量与常量的批处理文件比较失败](http://stackoverflow.com/a/42448601/3074564),它是关于__调试批处理文件__的。 – Mofi

+0

你会发现[SS64的批处理参考站点](https://ss64.com/nt/)非常有用。 –

回答

1

行:if %sel%=1 (goto task1)是非常不完整的;

写这样:

if "%sel%"=="1" goto task1 
2

正如@Antonio说,有一个与if语句有问题。我在:task1

set /p %time1%= 

还发现另一个问题应该

set /p time1= 

...,然后www.ss64.com/nt并采取批量脚本的一点教训。

2

这是您的IF声明。一个等号“=”被用作批量赋值运算符:

set var=fubar 

两个值进行比较使用双等号“==”:

if "%var%"=="fubar" echo It'll be reet! 

希望帮助,这是一个当我开始编写代码时,总会得到我的东西,而且你会习惯它。

相关问题