2017-10-06 48 views
0

下面是批處理腳本我的工作:批次 - 「後藤在這個時候意外」

@echo off 

:programBEGIN 
set FILE=R3D-%input1%.txt 
mode con:cols=24 lines=25 
color F 

set /p input1=}} INPUT: 
cls 
if %input1%=="" goto ERR1 
goto programLIST 

:programLIST 
echo Hello 

:ERR1 
echo Test 
pause 

每當我嘗試運行批處理文件並輸入沒有價值,它的快速提示關閉「goto在當時是意外的」

我的if語句的格式是正確的,還是它一直關閉的原因?

+0

可能的重複[爲什麼我的批處理文件的處理由於字符串與IF命令的比較而出現語法錯誤?](https://stackoverflow.com/questions/34690602/why-is-processing-of-my-批處理文件退出與語法錯誤在字符串比較) – Mofi

回答

2

因爲如果輸入沒有定義的腳本是這樣的:

if =="" goto ERR1 

這是一個語法錯誤。

嘗試這樣的:

if "%input1%"=="" goto ERR1 
0

而不是使用if語句,嘗試此相反:

IF DEFINED "%input1%" goto ERR1 

如果必須使用if語句正常的,你可以試試這個:

IF "%input1%"=="" goto ERR1 

只是爲了確保。除此之外,我不知道問題出在哪裏。

+1

應該是'如果定義input1 goto ERR1' – DodgyCodeException

+1

您'如果定義'是不正確的。它*應該*爲'如果沒有定義input1 ...'。在發佈時,envvar'「」'會被詢問(空'input1'),或者如果'input1'包含'fred',則''fred''(包括引號)將被詢問。嘗試設置帶引號的envvar將導致該變量名稱的值報告並且不會更改該變量。 (嗯......這個有調查...) – Magoo

相關問題