所以我有一個簡單的作業,做一個批處理檔案,顯示 3 個選項,以及選項條目的錯誤訊息。到目前為止,對我來說似乎很簡單。我看到了一個 youtube 視頻,據我所知,它應該可以正常運行,但問題是當我運行它并選擇選項 2 時,它也會打開選項 1,而當我選擇選項 3 時,它不會退出程式。當我選擇未指定的引數時,不顯示錯誤訊息。我要復制粘貼我的批處理檔案,因為它很容易理解。
@echo off
echo Choose an option:
echo.
echo 1)Open Disk cleanup
echo 2)Open Disk Defragmenter
echo 3)Exit
echo.
Set /p Op=Write the option:
if %op%==1 (
start %windir%\system32\cleanmgr.exe
)
else if %op%==2 (
start %windir%\system32\dfrgui.exe
)
else if %op%==3 (
exit
)
else (
cls
echo Error not defined
)
pause
有什么我遺漏或寫錯的地方,請告訴我。如果您可以復制粘貼并在您的計算機中運行它并告訴我它是否作業正常,因為某些東西告訴我在學習程序中我嘗試了幾次,我想我搞砸了一些假設可以正確運行該檔案的東西我的導師告訴我,在批處理檔案中使用命令時必須小心。
uj5u.com熱心網友回復:
您的代碼格式正確,但由于命令的使用而容易受到命令注入的影響SET /P。
@echo off
echo Choose an option:
echo.
echo 1)Open Disk cleanup
echo 2)Open Disk Defragmenter
echo 3)Exit
echo.
Set /p Op=Write the option:
if "%op%"=="1" (
start "" "%windir%\system32\cleanmgr.exe"
) else if "%op%"=="2" (
start "" "%windir%\system32\dfrgui.exe"
) else if "%op%"=="3" (
exit /b
) else (
cls
echo Error not defined
pause
)
處理無效輸入選項的最佳實踐解決方案。
@echo off
echo Choose an option:
echo.
echo 1)Open Disk cleanup
echo 2)Open Disk Defragmenter
echo 3)Exit
echo.
choice /C 123 /N /M "Select an Option:"
set "op=%errorlevel%"
if "%op%"=="1" start "" "%windir%\system32\cleanmgr.exe"
if "%op%"=="2" start "" "%windir%\system32\dfrgui.exe"
if "%op%"=="3" exit /b
uj5u.com熱心網友回復:
我用這段代碼做到了。
@回聲關閉
回聲選擇一個選項:
回聲。
echo 1)打開磁盤清理工具
echo 2)打開磁盤碎片整理程式
回聲 3)退出
回聲。
Set /p op/3=寫數字選項:
如果 %op/3%==1 ( 啟動 %windir%\system32\cleanmgr.exe )
如果 %op/3%==2 ( 啟動 %windir%\system32\dfrgui.exe )
如果 %op/3%==3 ( 退出 )
else (cls echo 錯誤未定義)
暫停
我遇到的唯一問題是,即使選擇了選項 1 和 2,也會出現錯誤訊息,它會執行選項,但也會顯示錯誤訊息。我只希望錯誤訊息顯示是否未選擇任何這些引數。我知道 else 正在回應,因為如果我選擇選項 1 else 會執行,因為不是數字 2 或 3。如果可以像一組選項集那樣以列舉格式定義 op 變數,我會想到什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370775.html
標籤:批处理文件
