我正在尝试使用批处理脚本方法制作一个卸载程序。我已经为此编写了程序:
@echo off
set /p res = Are you sure to uninstall my summer car and all of its
components? (NO = N, YES = Y)
if %res%==Y ( goto un )
else if %res%==y ( goto un )
else if %res%==N ( exit )
else if %res%==n ( exit )
:un
rmdir /s /q mysummercar
pause
但是我的程序实际上并没有运行,它显示“您确定要卸载我的夏季汽车及其组件(否= N,是= Y)”,但是在此消息之后,当我按Y(或y)时小),则批处理文件消失。仅当按下N(或n小)或其他键时,该按钮才应消失,但同时按下Y时,该按钮也将消失。 谁能告诉我解决方案以运行完整的批处理文件,即运行程序的“ un”循环?
答案 0 :(得分:0)
在学习了如何使用If
,Set
和Choice
命令之后,您可以选择将代码简化为更明智的选择:
使用Set /P
@If Not Exist "mysummercar\" Exit /B
@Set /P "res=Uninstall my summer car and all of its components [Y,N]?"
@If /I Not "%res%"=="Y" Exit /B
@RD /S/Q "mysummercar"
或更短的(没有Not
):
@If Not Exist "mysummercar\" Exit /B
@Set /P "res=Uninstall my summer car and all of its components [Y,N]?"
@If /I "%res%"=="Y" RD /S/Q "mysummercar"
使用Choice
@If Not Exist "mysummercar\" Exit /B
@Choice /M "Uninstall my summer car and all of its components"
@If ErrorLevel 2 Exit /B
@RD /S/Q "mysummercar"
或更短的(带有Not
):
@If Not Exist "mysummercar\" Exit /B
@Choice /M "Uninstall my summer car and all of its components"
@If Not ErrorLevel 2 RD /S/Q "mysummercar"
答案 1 :(得分:0)
有更好的方法来执行此操作,但要始终专注于当前格式...这里的主要问题是,您在=
之前创建了一个带有空格的变量,因此该变量被创建为{{1 }},因此%res %
不是%res%
此外,我们使用%res %
开关来测试不区分大小写的代码。最后,如果用户键入任何其他值,将会发生什么?然后它将消失并且仍然执行if /i
,因此只需运行:un
if /i "%res%"=="y"
一个更简单的解决方案是:
@echo off
set /p "res=Are you sure to uninstall my summer car and all of its components? (NO = N, YES = Y): "
if /i "%res%"=="y" rmdir /s /q mysummercar
我强烈建议您阅读一些帮助文件。打开@echo off
choice /C YN /M "Press Y to uninstall my summer car or N to Cancel"
if %errorlevel% equ 1 rmdir /s /q mysummercar
并运行以下命令:
cmd.exe
choice /?
set /?