[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] SET /P有没有办法只允许输入数字?

  1. @echo off
  2. title 延时关机
  3. mode con: cols=32 lines=3
  4. color 1f
  5. cls
  6. set time=
  7. echo.
  8. set /p time= 请输入在多少秒后关机:
  9. title 延时 %time% 秒关机
  10. echo.
  11. echo   电脑将在 %time% 秒后关机.
  12. shutdown -s -f -t %time% >nul
  13. ping -n 15 127.0.0.1>nul
复制代码


以上代码能不能在输入秒数字限制为数字?或者输入非数字时提示重输?


另外,有没有办法把SHUTDOWN的那个倒计时窗口隐藏掉?

[ 本帖最后由 semiuel 于 2008-12-8 00:59 编辑 ]

谢谢楼上这么多好心的朋友帮助,白天没时间,只能晚上上来看了.

TOP

2楼代码只能判断输入的第一个字符,如果我输入"1a",它也当是数字的.
6楼,谢谢你的建议,但我一般都是把MSTASK服务关掉的.另一个你说的软件我没有.
7楼,ping -n 1 127.0.0.1只是约等于1秒,并不精确.
我按照5楼的方法写了下面的代码,没把SHUTDOWN窗口隐藏掉:
  1. @echo off
  2. title 延时关机
  3. mode con: cols=32 lines=3
  4. color 1f
  5. :begin
  6. cls
  7. set time=
  8. echo.
  9. set /p time= 请输入在多少秒后关机:
  10. set /a a=1/(%time%1) 2>nul && cls || goto begin
  11. title 延时 %time% 秒关机
  12. echo.
  13. echo   电脑将在 %time% 秒后关机.
  14. shutdown -s -f -t %time% >nul
  15. ping -n 15 127.0.0.1 >nul
复制代码

TOP

上面的代码还是有问题.
当我输入"10*20"后,SET /A判断通过了,但SHUTDOWN不认识这个"数字".

TOP

谢谢楼上几位包括管理员的解答,让我学到不少东西.

TOP

原帖由 too_lazy 于 2008-12-10 21:55 发表
ping -n %time% 127.1 >nul
為什么要用到這句???
可以解釋一下嗎???
謝謝


楼上问的是几楼回复里的?
我自己代码里最后一句
ping -n 15 127.0.0.1
的目的是让窗口保持10秒左右后自动关闭.

7楼代码里的这一句目的是延时%time%次PING后执行SHUTDOWN(立即关机)

TOP

原帖由 rat 于 2008-12-9 03:13 发表
判断数字的@echo off & setlocal
if "%~1" neq "-new" start "" "%~f0" -new & exit/b
set /p s=Please Input:
call :IsNumeric "%s%" && echo True || echo False
pause & exit



:IsNumeric
setlocal
f ...


13楼的这个方法在判断数字失败一次后进入实模式DOS,也就是说不认中文字了.

TOP

返回列表