【问题标题】:(Windows Batch File) IF statement inside FOR LOOP(Windows 批处理文件)FOR LOOP 中的 IF 语句
【发布时间】:2014-07-09 20:05:18
【问题描述】:

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

【问题讨论】:

标签: batch-file if-statement for-loop batch-processing multiple-choice


【解决方案1】:

我在理解您遇到的问题时遇到了一些麻烦,但看起来IF 之后的所有语句都应该是IF 的条件,而不仅仅是ECHO 语句。为此,您可以将整个块放在括号中,如下所示:

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

您在 FOR 循环中使用 goto 时遇到问题吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2012-05-11
    • 2017-08-01
    • 2021-06-23
    相关资源
    最近更新 更多