1

我正在嘗試編寫我的程序的手動文檔驗證部分。它基本上是在同一個文件夾中逐一打開所有的pdf文檔。當它打開時,我想回應用戶的一些可能性。這裏出現問題。我有大約180個可能的選擇。我正在考慮要求提供首選信。然後它會回顯所有選擇,以X字母開頭,用戶只需輸入該選項的編號。因此,例如,我們有: 1. Asomething 2. Asomename 3. Asomenametoo 4. BNAME 5. BNAME 2 6. BNAME 3(Windows批處理文件)FOR LOOP中的IF語句

我想用戶選擇第一個字母和打印可能的選擇。當做出選擇時,程序應該在相同的文件夾中向同名的txt文件添加一些字符串。這裏我有一個FOR循環中的IF語句的問題。我想使用goto,但是我不能在FOR循環中執行它。

我可以設置每個數字的所有字符串之前。例如:當您選擇1時,它會將SomeString添加到txt。使用選項來避免任何錯字是很重要的。有人知道任何其他方式在FOR循環內執行此操作嗎?

CODE:

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 
+0

[FOR循環(批處理/ cmd)中檢查「IF」條件的可能重複](http://stackoverflow.com/questions/1163938/check-if-condition-inside-for-loop-batch-cmd) –

回答

1

我遇到一些麻煩了解您遇到的問題,但它看起來像所有繼IFIF應該都是條件語句,而不僅僅是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語句的一些問題?

相關問題