选择返回错误

时间:2015-12-01 19:50:08

标签: batch-file

问题
我有2个文件夹(每个包含一个文件),我试图将文件从一个文件复制到另一个文件夹。我写的CHOICE命令工作正常;但是,在选择答案后,程序立即关闭(无论选择何种选择)。显示一条线" 1此时出乎意料"因为它正在关闭。

我的代码

ECHO. & CHOICE /C:123 /N /M "Copy? (1. Copy 2. Exit 3. No Choice)" & ECHO.
::assigns choice values for user

IF /i %errorlevel1% EQU 1 GOTO copy
IF /i %errorlevel2% EQU 2 GOTO end
IF /i %errorlevel3% EQU 3 GOTO no_choice
::based on selection, redirects to logic

:copy
ECHO.
ECHO.
ECHO You chose to COPY the files... Hit any key to START or ctrl-z to CANCEL.
PAUSE > NUL
SET src_folder=d:\batch
SET dst_folder=d:\newBatch
FOR /F "tokens=*" %%i in (batch.txt) DO (
xcopy /S/E/U "%src_folder%\%%i" "%dst_folder%")
GOTO end
::offers cancel; if continue, copies files from batch to newBatch

:end
EXIT
::ends program

:no_choice
ECHO No action has been performed...
PAUSE
EXIT
::print message; then ends program

研究
我在网上搜索过,以及这个网站的一些帖子,它帮助我解释了我现在所拥有的内容。我在这里找到了关于此主题的最新Stack Overflow帖子(Error: 1 was unexpected at this time)。我实施了" / i"解决了这篇文章中提到的问题,但提出问题的个人只是在验证ECHO语句而非选择。

问题

  • 我很困惑这个错误发生在哪里,因为我没有在批处理编程中知道的调试功能,并且程序在错误点立即关闭。 (CHOICE声明是错误的,还是导致此问题的后续逻辑?)
  • 我应该避免使用CHOICE方法并按照我引用的帖子处理此过程吗? (在这种情况下,是否比使用CHOICE更有效地验证ECHO?)

谢谢!

1 个答案:

答案 0 :(得分:1)

你在ERRORLEVEL变量名称中犯了一个错误。

IF %errorlevel% EQU 1 GOTO copy
IF %errorlevel% EQU 2 GOTO end
IF %errorlevel% EQU 3 GOTO no_choice

在这种情况下,/i选项不是必需的......

相关问题