谁能告诉我bat脚本else的用法

我的一运行就闪退了,就是我想设置程序开机启动或不启动此脚本,我该怎么办?

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这是注册表吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-21
简单的编辑软件,可以用它来编辑一些程序和批处理文件。 格式:edit [盘符][文件名] 举例:edit c:\autoexec.bat 输入此命令后将打开编辑器。在编辑状态下输入文件内容后,按alt+f键激活file菜单,按向下的箭头选择退出(exit),提示是否要保存刚才输入的内容,如果要保存,只需输入y或者直接回车即可。 如果在xp下就有记事本,应该知道吧!把.txt改为bat,就OK。追问

啊啊啊我求你了给个正确的答案出来吧吧吧

第2个回答  2019-03-21
else必须搭配if命令,您没有一个if进行判断哪来esle否则这个指令。
自己在cmd窗口中执行if /?看一下帮助文档。
相似回答