嗨,我在最后看到了一些使用 %1 的 CHOICE 示例,例如
Choice /n /c 01234ABCD /m "Select Task Opton:"%1
但有些最后沒有 %1。只是好奇什么時候應該使用 %1 ?請欣賞任何建議。
修改
Choice %~1 /n /c 01234ABCD /d 3 /t 20 %~2 " default is 3 after 20 secs " /m "Select Task Opton:%~2"
if "%errorlevel%"=="3" 轉到第三個 if "%errorlevel%"=="2" 轉到第二個
:three echo %errorlevel% echo This is Three goto next
uj5u.com熱心網友回復:
%1
是提供給批處理檔案的第一個引數,所以
thisbatch something somethingelse
將“設定”%1
為something
;%2
到somethingelse
.
在所示的情況下,它將引數附加到提示字串,所以
thisbatch /cs
會提示Select Task Opton:/cs
.
但
如果Space結束引號之間有一個,%1
那么它可以為choice
命令添加額外的選項,所以
thisbatch /cs
將使選擇區分大小寫。
會更好
Choice /n /c 01234ABCD /m "Select Task Opton:" %~1
你可以在哪里使用
thisbatch "/d 3 /t 20"
指定“如果 20 秒內沒有回應,則默認選擇‘3’”。行上的引號thisbatch
導致引號之間的字串被視為單個字串。~
in洗掉封閉的%~1
引號。
就個人而言,我會使用
Choice %~1 /n /c 01234ABCD /m "Select Task Opton:%~2"
在哪里
thisbatch "/d 3 /t 20" " default is 3 after 20 secs "
會提示Select Task Opton: default is 3 after 20 secs
--- 回答start
問題:
是的 - 將引號作為開始引數傳遞是一個問題。
請記住,行程start
ed繼承了當前環境的副本,因此您可以將資料放入環境中的變數中,并將它們復制到start
ed行程中。
嘗試這個:
這個bat.bat
@echo off
setlocal
if "%~1"=="" (call :makechoice %parameters%
) else for /f "tokens=1*delims==" %%b in ('set %1 2^>nul') do if /i "%%b"=="%~1" call :makechoice %%c
echo result is %errorlevel%
goto :eof
:makechoice
Choice %~1 /n /c 01234ABCD /m "Select Task Opton:%~2"
goto :eof
和一個測驗/演示
那蝙蝠.bat
@echo off
setlocal
set "parameters="/d 3 /t 20" " default is 3 after 20 secs ""
set "altparameters="/d 1 /t 25" " default 1 in 25 secs ""
set "altparameters2="/d a /t 37" " default a in 37 secs ""
START "title" "thisbatch.bat"
start "anothertitle" "thisbatch.bat" altparameters
因此,如果您不向start
ed 行程提供任何引數,則該行程將使用parameters
其繼承環境中的值,并且如果您確實提供了變數的名稱作為引數,thisbatch
則從繼承的變數中獲取值其名稱作為引數提供。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507902.html
標籤:批处理文件