1

我正在尝试编写程序的手动文档验证部分。它基本上是在同一个文件夹中一一打开所有pdf文档。当它打开时,我想为用户回应一些可能性。问题从这里开始。我有大约 180 种可能的选择。我正在考虑要求选择的第一个字母。然后它将回显所有以 X 字母开头的选项,用户只需输入该选项的编号即可。例如我们有: 1. Asomething 2. Asomename 3. Asomenametoo 4. Bname 5. Bname 2 6. Bname 3

我希望用户选择第一个字母并打印可能的选择。做出选择时,程序应在同一文件夹中的同名 txt 文件中添加一些字符串。在这里,我在 FOR 循环中遇到了 IF 语句的问题。我想使用 goto 但我不能在 FOR 循环中使用它。

我之前可以为每个数字设置所有字符串。例如:当您选择 1 时,它会将 SomeString 添加到 txt。重要的是使用选择选项来避免任何拼写错误。有人知道在 FOR 循环中执行此操作的任何其他方法吗?

代码:

setlocal enabledelayedexpansion
FOR %%b IN (c:\test\*.txt) DO (
IF "%ERRORLEVEL%"=="0" ECHO    Document will open now...
start Acrobat.exe %%b.pdf
ECHO 1. Sample 1
ECHO 2. Sample 2
set /p choice=   Please enter number:
call :OPTION
ECHO !choice! >> %%b
PAUSE
taskkill /IM Acrobat.exe >> c:\test\log\temp.txt
)
PAUSE
GOTO MENU
:OPTION
IF !choice!==1 SET /A !choice!==MNV666
IF !choice!==2 SET /A !choice!==MNV777
GOTO:EOF
4

1 回答 1

1

I'm having some trouble understanding the problem you're having, but it looks like all of the statements following the IF should all be conditions of the IF, not just the ECHO statement. For that, you can put the entire block in parentheses like this:

setlocal enabledelayedexpansion
FOR %%b IN (c:\test\*.txt) DO (
    IF "%ERRORLEVEL%"=="0" (
        ECHO    Document will open now...
        start Acrobat.exe %%b.pdf
        ECHO 1. Sample 1
        ECHO 2. Sample 2
        set /p choice=   Please enter number:
        call :OPTION
        ECHO !choice! >> %%b
        PAUSE
        taskkill /IM Acrobat.exe >> c:\test\log\temp.txt
    ) else (
        goto :EOF  REM Just an example of else
    )
)
PAUSE
GOTO MENU
:OPTION
IF !choice!==1 SET /A !choice!==MNV666
IF !choice!==2 SET /A !choice!==MNV777
GOTO:EOF

Were you having some problem using goto in the FOR loop?

于 2014-08-10T00:04:25.193 回答