我在我的批處理文件中存在循環問題。當使用set命令時,我給了用戶兩個選擇。第一個選項正常工作,但第二個選項被忽略,除非循環函數完成重新提出問題。然後它接受第二個選項的輸入。批處理文件循環問題
:WithAccess
cls
If not exist "C:\Program Files (x86)\Microsoft Office\Office15\Winword.exe" (
goto UninstallViewers
:WithAccess2
echo Installing MS Office 2013 x32 With Access...
start /wait "" "MS Office 2013 x32 Installers\MSOfficeWithAccess"
echo Installation Complete.
) Else (
echo Microsoft Office 2013 might already be installed.
set /p op4=Do you want to run installer anyway? [Y/N]:
If "%op4%"=="y" goto WithAccess2
If "%op4%"=="n" goto end
echo That's not a valid option.
goto WithAccess
)
所以,在這個if語句的「其他」部分,當用戶選擇選項2或「n」,它會忽略這一點,並移動到任何代碼之後。在這種情況下,它會循環回到此代碼段的開頭。但是在循環之後,它現在接受用戶輸入並正確跳轉到「結束」標籤。
玩過之後,我發現刪除圍繞此段的標籤可以修復它,但是如果用戶發生錯誤,它將不會返回並重新提出問題。本來我的「其他」的語句是這樣的:
Else (
echo Microsoft Office 2013 might already be installed.
:Loop2
set /p op4=Do you want to run installer anyway? [Y/N]:
If "%op4%"=="y" goto WithAccess2
If "%op4%"=="n" goto end
echo That's not a valid option.
goto Loop2
)
因此,這將非常循環同樣的問題,但顯然它發生同樣的問題。我試過四處尋找答案,但很難找到這樣一個特定的編碼問題。任何幫助,將不勝感激。
也許我錯過了一些東西,但'%op4%'?發佈後,代碼需要延遲擴展。 – 2015-03-03 06:53:39
你不會錯過任何事情。現在修復它。謝謝! – rojo 2015-03-03 16:20:44