我正在尝试编写我的程序的手动文档验证部分。它基本上是在同一个文件夹中逐个打开所有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
我在理解你遇到的问题时遇到了一些麻烦,但看起来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有问题吗?