我正在尝试自定义一点,已经制作了非常基本的批处理文件,纯粹是为了好玩,目的是更改您的 Steam 客户端状态。
原始文件在这里,它工作得很好。
但是,我想用
if errorlevel
,而不是他的if '%choice%'=='
。
显然我无法让它工作,如果有人能帮助我,我将不胜感激。
if errorlevel
更好,在我看来,因为会立即转到您选择的选项,每次按下未分配的键/做出不可用的选择时,也有很酷的 BEEP 声音。
我试过这样,但它不起作用,批处理文件只是自行关闭,并且不执行任务。
choice /c:12345678 /n > nul
if errorlevel 8 goto EXIT
if errorlevel 7 goto OFFLINE
if errorlevel 6 goto BUSY
if errorlevel 5 goto LOOKING TO PLAY
if errorlevel 4 goto LOOKING TO TRADE
if errorlevel 3 goto AWAY
if errorlevel 2 goto INVISIBLE
if errorlevel 1 goto ONLINE
问题可能出在您的代码的其他地方,因为它按预期工作:
@echo off
choice /c:123 /n > nul
if errorlevel 3 goto EXIT
if errorlevel 2 goto OFFLINE
if errorlevel 1 goto BUSY
echo Someone hit Ctrl-break and continued
goto EXIT
:OFFLINE
echo OFFLINE
goto EXIT
:BUSY
echo BUSY
goto EXIT
:EXIT
您不应该使用带空格的标签,因为空格后的任何内容都将被忽略,这意味着
LOOKING TO PLAY
和 LOOKING TO TRADE
都会尝试定位并运行第一个遇到的以 :LOOKING
开头的标签。
我可能会忘记使用多个标签,在这种情况下,我会选择不使用
If ErrorLevel
.
例如:
@Echo Off
SetLocal EnableExtensions
Set "CMD=%SystemRoot%\System32\rundll32.exe %SystemRoot%\System32\url.dll,FileProtocolHandler"
:Start
Set "Lbl=Start"
Set "Sta="
Set "URI=steam://friends/status/"
Echo(
Echo 1. Online
Echo 2. Invisible
Echo 3. Away
Echo 4. Looking To Trade
Echo 5. Looking To Play
Echo 6. Busy
Echo 7. Sign out from friends and chat
Echo 8. Exit from Steam
Echo(
%SystemRoot%\System32\choice.exe /C 12345678 /M "Select your preferred status"
If %ErrorLevel% Equ 1 Set "Sta=online"
If %ErrorLevel% Equ 2 Set "Sta=invisible"
If %ErrorLevel% Equ 3 Set "Sta=away"
If %ErrorLevel% Equ 4 Set "Sta=trade"
If %ErrorLevel% Equ 5 Set "Sta=play"
If %ErrorLevel% Equ 6 Set "Sta=busy"
If %ErrorLevel% Equ 7 Set "Sta=offline"
If %ErrorLevel% Equ 8 (Set "URI=steam//ExitSteam" & Set "Lbl=:EOF")
%CMD% %URI%%Sta%
GoTo %Lbl%