इनपुट स्ट्रिंग में स्थान के कारण बैच त्रुटि


2

मैं अंत उपयोगकर्ता के लिए संभावित आदानों की एक तालिका बनाने की कोशिश कर रहा हूं, लेकिन एक इनपुट के कारण कार्यक्रम क्रैश हो रहा है क्योंकि एक स्थान है। मुझे पता है कि आमतौर पर इनपुट को "" के साथ संलग्न करना सही बात है, लेकिन यह इस मामले में काम नहीं करता है, यहां कोड है:

SET /P ANSWER=%ANSWER%
if /i {%ANSWER%}=={help} (goto :FunctionList)
if /i {%ANSWER%}=={?} (goto :FunctionList)
if /i {%ANSWER%}=={clear} (goto :clear)
if /i {%ANSWER%}=={yes} (goto :yes)
if /i {%ANSWER%}=={tutorial} (goto :tutorial)
if /i {%ANSWER%}=={New User} (goto :NewUser) **--Offending line**

रेखा :

if /i {%ANSWER%}=={New User} (goto :NewUser)

{New User}"" या नहीं द्वारा दर्शाए जाने के बावजूद, निम्नलिखित भाग में जाने से इनकार करता है ।

:NewUser
    SET /P USERNAME=Please enter your desired username:
    SET /P PASSWORD=Please enter your desired password:

जवाबों:


1

मुझे पता है कि आमतौर पर इनपुट को "" के साथ जोड़ना सही काम है

लेकिन यह इस मामले में काम नहीं करता है

if /i {%ANSWER%}=={help} (goto :FunctionList)

जब %ANSWER%है New Userयह एक में शामिल है Spaceऔर द्वारा दो अलग-अलग तारों के रूप में व्यवहार किया जाता है ifआदेश।


उपाय

एस ifमें अभिव्यक्ति संलग्न करें ":

if /i "%ANSWER%"=="help" (goto :FunctionList)
if /i "%ANSWER%"=="?" (goto :FunctionList)
if /i "%ANSWER%"=="clear" (goto :clear)
if /i "%ANSWER%"=="yes" (goto :yes)
if /i "%ANSWER%"=="tutorial" (goto :tutorial)
if /i "%ANSWER%"=="New User" (goto :NewUser)

सीमांकक

यदि IFकमांड द्वारा तुलना की जा रही स्ट्रिंग में सीमांकक शामिल हैं जैसे कि , Spaceया Commaतो सीमांकक को कैरेट के साथ बच जाना चाहिए ^या पूरे स्ट्रिंग को "उद्धृत" किया जाना चाहिए।

यह इसलिए है ताकि IFस्टेटमेंट स्ट्रिंग को एक एकल आइटम के रूप में मान ले, न कि कई अलग-अलग तारों के रूप में।

स्रोत अगर - सशर्त रूप से एक कमांड करते हैं।


आगे की पढाई

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.