Board logo

标题: 怎样才能实现"Y"和"N"的功能?谢谢了 [打印本页]

作者: liuzhigao     时间: 2007-10-10 19:51    标题: 怎样才能实现"Y"和"N"的功能?谢谢了

由于帖子标题限制了,
不能表达清楚,
我现在有一个自己刚写的文件,
自己什么也不懂,刚接触批处理,
所以有些功能没法实现,
现请各位帮忙看一下,
要怎样才能实现这样的功能?
功能:删除驱动包时让它提示是否删除,
如果删除的话,请按"Y",否则按"N",
还有一个主要的是,不管删不删除,
在按了"Y"或是"N"以后都要把批处理本身给删除掉!
而我现在写的这个呢只能是在确定删除驱动包的时候才能把批处理本身给删除了,
如果不删除驱动包的话,那就没法了,就得手动删除!


如下是我的文件里的内容,请各位帮忙看一下,谢了
title liuzhigao个人设置程序
@echo off
@del "c:\Documents and Settings\all users\桌面\windows media player.lnk"
echo.
@del "c:\drivers\chipsets.exe"
@del "c:\drivers\Display.exe"
@del "c:\drivers\Ethernet.exe"
@del "c:\drivers\Integrated.exe"
@del "c:\drivers\Sound.exe"
@del "c:\drivers\srsdrv.exe"
echo.
echo.
echo 必看:(操作前必看!)
echo.
echo 接下来的操作将删除驱动包,位于C:\drivers!
echo.
echo 在所有驱动已安装好且确定删除此驱动包的话!
echo.
echo 请按任意键(建议删除此驱动包,因为其容量会占用C盘大量空间)!
echo.
echo 如驱动还未安装完毕!
echo.
echo 请先最小化此窗口,待驱动安装完毕后再继续此后的操作!
echo.
echo 如不想删除此驱动包!在关闭此窗口后手动删除下面的文件:
echo.
echo C:\Documents and Settings\All Users\「开始」菜单\程序\启动\123.bat
echo.
pause
@rd "c:\drivers" /q/s
echo.
echo 驱动包已成功删除,按任意键退出此程序!
@del "C:\Documents and Settings\All Users\「开始」菜单\程序\启动\123.bat"
echo.
echo.
pause

作者: Nickey     时间: 2007-10-10 20:01
你这里没有“Y”&"N"啊
在最后加
del /f /s /q 文件名
不可以吗?
作者: liuzhigao     时间: 2007-10-10 22:27
是的,我的里边没有,
看来楼上的不是很明白我的意思,

我的意思是删除驱动的话,按一下Y,就删除了,不删除的话按N退出,也就是同意与不同意的意思,

不过这两个过程后面接着要完成一件事,就是把批处理本身删除了
作者: liuzhigao     时间: 2007-10-11 10:34


  Quote:
Originally posted by wudixin96 at 2007-10-10 10:38 PM:
rd /s即可。不要带/Q开关就行了。

删除本身就是del /q /f %0

那我上面那个命令现在只能是在确定删除驱动包的情况下才能自我删除,能不能让它在不删除驱动包的情况下也把批处理自身也删除了?
作者: HAT     时间: 2007-10-11 11:21
楼主可以参考一下这段脚本
@echo off
rem 在屏幕右下角显示/隐藏星期

:input
echo Do you want to display the week(Y/N)?
set /p flag=
if %flag% == y (
  goto :display
) else if %flag% == Y (
  goto :display
) else if %flag% == n (
  goto :hide
) else if %flag% == N (
  goto :hide
) else goto :input

:display
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sLongDate /t REG_SZ /d "dddd, MMMM dd, yyyy" /f>nul
goto :end

:hide
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sLongDate /t REG_SZ /d "MMMM dd, yyyy" /f>nul
goto :end

:end
rem 删除批处理本身
del %0

作者: 不得不爱     时间: 2007-10-11 11:26
看下面的可以吗?
title liuzhigao个人设置程序
@echo off
del "c:\Documents and Settings\all users\桌面\windows media player.lnk"
echo.
del "c:\drivers\chipsets.exe"
del "c:\drivers\Display.exe"
del "c:\drivers\Ethernet.exe"
del "c:\drivers\Integrated.exe"
del "c:\drivers\Sound.exe"
del "c:\drivers\srsdrv.exe"
echo.
echo.
echo 必看:(操作前必看!)
echo.
echo 接下来的操作将删除驱动包,位于C:\drivers!
echo.
echo 在所有驱动已安装好且确定删除此驱动包的话!
echo.
echo 请按y删除此驱动包(建议删除此驱动包,因为其容量会占用C盘大量空间)!
echo.
echo 如驱动还未安装完毕!
echo.
echo 请先最小化此窗口,待驱动安装完毕后再继续此后的操作!
echo.
echo 如不想删除此驱动包!请按N或者任意键
echo.
set/p a=按Y删除此驱动包,按N或者任意键不删除此驱动包
if /i not %a%.=y. goto a
rd "c:\drivers" /q/s
echo.
echo 驱动包已成功删除,按任意键退出此程序!
echo.
echo.
pause
:a
del /q %0

作者: 不得不爱     时间: 2007-10-11 16:00
set /P是多此一举吗?
如果是rd "c:\drivers" /s 在执行时会提示  c:\drivers,是否确认(Y/N)? 这个意思没有set/p的提示好懂啊!