else 是和 if 搭配使用的,其他编程语言中也是如此。
与其他编程语言不同的是批处理中的格式:
if 判断条件 ( 执行语句1 ) else 执行语句2
或者
if 判断条件 (
执行语句1
) else (
执行语句2
)
设置开机启动有多种方式,比如修改注册表,或者在开机启动目录中创建快捷方式等。
以下代码是通过在开机启动目录中创建快捷方式:
@echo off
:KAI
REM 判断开机启动目录中是否有快捷方式
if exist "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\%~n0.lnk" (
REM 如果有快捷方式,则删除。
del "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\%~n0.lnk" 1>nul 2>nul
echo, 已禁用本程序开机启动。
) else (
REM 如果没有快捷方式,则创建快捷方式。
call :creatshortcut "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\%~n0.lnk" "%~f0" "" "%~dp0"
echo, 已启用本程序开机启动。
)
pause
goto muen
:creatshortcut
REM 使用VBScript创建快捷方式
REM 参数1:
快捷方式文件位置
REM 参数2:目标位置
REM 参数3:运行参数
REM 参数4:运行目录
mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell"").CreateShortcut(""%~1""):a.TargetPath=""%~2"":a.Arguments=""%~3"":a.WorkingDirectory=""%~4"":a.Save:close")
exit /b
追问有更好的答案吗?以进KAI进闪退了
追答我不知道你的闪退原因是什么。上面的启动目录是按照win7系统的。Win7系统可以运行。
下面代码改成了win10系统的。
除了在开机启动目录中添加快捷方式以外,还可以自己尝试通过修改注册表或者wmic的方式。
@echo off
:KAI
REM Win10启动目录
set ".startup=%programdata%\Microsoft\Windows\Start Menu\Programs\Startup"
REM 判断开机启动目录中是否有快捷方式
if exist "%.startup%\%~n0.lnk" (
REM 如果有快捷方式,则删除。
del "%.startup%\%~n0.lnk" 1>nul 2>nul
echo, 已禁用本程序开机启动。
) else (
REM 如果没有快捷方式,则创建快捷方式。
call :createshortcut "%.startup%\%~n0.lnk" "%~f0" "" "%~dp0"
echo, 已启用本程序开机启动。
)
pause
goto muen
:createshortcut
REM 使用VBScript创建快捷方式
REM 参数1:快捷方式文件位置
REM 参数2:目标位置
REM 参数3:运行参数
REM 参数4:运行目录
mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell"").CreateShortcut(""%~1""):a.TargetPath=""%~2"":a.Arguments=""%~3"":a.WorkingDirectory=""%~4"":a.Save:close")
exit /b
追问%programdata%\Microsoft\Windows\Start Menu\Programs\Startup这是注册表吗?