使用用户输入控制功能调用:批处理

时间:2019-03-06 10:06:29

标签: batch-file

我想编写一个批处理文件,该文件可以根据从用户那里收到的输入来工作,但是在我的代码上,它总是调用“ AddingFile”函数。

@ECHO off

ECHO Select [A] Adding File [R] Remove File [C] Copy File [E] Close Program.

GOTO:startCompile


:startCompile
::CLS

SET /p select = Make a selection. 

IF "%select%"=="1" ( goto addingFileObject )
IF "%select%"=="2" ( goto removeFileObject )
IF "%select%"=="3" ( goto copy )
IF "%select%"=="4" ( goto defaultExit )

:addingFile
ECHO "Adding files"
goto:EOF

:removeFile
ECHO "Remove files"
goto:EOF

:defaultExit
pause
goto:EOF

:copy
ECHO "Copying Filed"
goto:EOF

2 个答案:

答案 0 :(得分:3)

…并使用更合适的Choice命令:

@Echo Off
Choice /C ARCE /N /M "Select [A]dd [R]emove [C]opy or [E]xit"
If ErrorLevel 4 GoTo :EOF
If ErrorLevel 3 GoTo copy
If ErrorLevel 2 GoTo removeFile

Echo "Adding files"
Timeout 2 /NoBreak>Nul
Exit /B

:removeFile
Echo "Remove files"
Timeout 2 /NoBreak>Nul
Exit /B

:copy
Echo "Copying Files"
Timeout 2 /NoBreak>Nul

答案 1 :(得分:1)

代码包含两个错误。

SET /P select<space>=...行是错误的,或者至少会产生意外的行为。
它设置了一个名为select<space>的变量,因此通过%select%的访问将始终失败。

exit /b命令块之后缺少goto :eofIF,如果所有的IF比较都不为真,则会导致错误的行为。
然后,将执行addingFile部分。

顺便说一句。可以使用ECHO ON调试此类问题。 在这种情况下,这些行将显示第二个问题,%select%始终为空

...
c:\Temp>IF "" == "1" (goto addingFileObject  )
c:\Temp>IF "" == "2" (goto removeFileObject  )
c:\Temp>IF "" == "3" (goto copy  )
c:\Temp>IF "" == "4" (goto defaultExit  )