2017-05-02 251 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! 

希望幫助,這是一個當我開始編寫代碼時,總會得到我的東西,而且你會習慣它。

相關問題