あなたはそのような何か試すことができます。
@echo off
Title Division Computation
:START
cls
Color 0A
set /p "FN=Enter first number : "
if "%FN%" EQU "22" Exit
::*******************************
:SECONDNUMBER
Color 0A
set /p "SN=Enter second number : "
if "%SN%" EQU "22" Exit
if "%SN%" EQU "0" GOTO ZEROERROR
GOTO DIVIDE
::*******************************
:DIVIDE
set /a RESULT=%FN%/%SN%
echo %FN% divided by %SN% = %RESULT%
pause
cls
GOTO START
::*******************************
:ZEROERROR
Color 0C
echo Sorry! You CAN NOT divide by ZERO. Please enter a new number.
pause
cls
GOTO SECONDNUMBER
::*******************************
をそして、これはボーナスタイプライターで電卓や楽しみのためだけにあなたに私から声を話している:)
@echo off
Title Calculator with a TypeWriter and Speaking Voice by Hackoo 2016
Color 0A & Mode con cols=80 lines=3
Call :TypeWriter "Hello, Welcome to my calculator. First off would you like to tell me your name ? "
echo(
Call :TypeWriter "So, Whats your name ? "
set /p name=
Call :TypeWriter "Ah, Nice to meet you %name% !"
::*************************************************************
:start
Call :TypeWriter "What is the first number you want to use ? "
set /p no=
Call :TypeWriter "What Operation do you want to use ? "
set /p op=
Call :TypeWriter "What is the second number you would like to use ? "
set /p no2=
Call :TypeWriter "%no% %op% %no2% "
set /a ans=%no% %op% %no2%
Call :TypeWriter " Well, That was an easy one the answer is %no% %op% %no2% = %ans% "
Call :TypeWriter " Would you like to do another calculaton ? Y(Yes) or N(No) ?"
set /p Question=
If /I "%Question%"=="Y" (goto :start) else (Goto :end)
::*************************************************************
:TypeWriter
Cls
echo(
(
echo strText=wscript.arguments(0^)
echo intTextLen = Len(strText^)
echo intPause = 150
echo For x = 1 to intTextLen
echo strTempText = Mid(strText,x,1^)
echo WScript.StdOut.Write strTempText
echo WScript.Sleep intPause
echo Next
echo Set Voice=CreateObject("SAPI.SpVoice"^)
echo voice.speak strText
)>%tmp%\%~n0.vbs
@cscript.EXE /noLogo "%tmp%\%~n0.vbs" "%~1"
exit /b
::**************************************************************
:end
Exit
::*************************************************************
'set/p SN = ...'は 'SN' + _space_と呼ばれる変数を設定します。 '%SN%" == 22 '引用符付きの文字列を引用符で囲まれていない文字列と比較するので、常に失敗します(引用符は比較の一部です)。それを解決するには、右の部分も引用してください( '' 22 "')。引用された構文は空の文字列に対して堅牢ですが、引用符で囲まれていない構文は堅牢ではありません。 – aschipfl
私はこの同じ問題を今週毎日答えてきたと思います。遅延拡張と同じです。おそらく、人々が理解していないバッチファイルの2つの最も一般的なエラーです。 – Squashman