无忧启动论坛

标题: 【求助】怎样确保cmd批处理下输入的参数是数字 [打印本页]

作者: 狂野咆哮    时间: 2008-2-23 12:47
标题: 【求助】怎样确保cmd批处理下输入的参数是数字
echo 进入磁盘自动分区程序,您想将磁盘分成几个分区?
         echo 请输入分区数:
         rem 输入分区数,
         set /p ParNum=

怎样确保输入的是数字,而且不大于10???

望各位大侠不吝指点

[ 本帖最后由 狂野咆哮 于 2008-2-23 06:31 PM 编辑 ]
作者: icevan    时间: 2008-2-24 23:02
最简单的方法.
开始加上"echo 请输入1,2,3等不大于10的数字,输入其他字符,后果自负."
第二种
:a
set /p select=请输入分区数:
set /a select=%select%-0
if %select%==1 goto 1
if %select%==2 goto 2
................................
if %select%==10 goto 10
if %select% equ 0 goto error
if %select% gtr 10 goto error

:error
echo 输入错误,请重新输入
goto a

问个问题.分区数出来了.分区大小你怎么办?
一个80G的难道从1G判断到80G?要是500G的话..........................

[ 本帖最后由 icevan 于 2008-2-24 11:20 PM 编辑 ]
作者: namejm    时间: 2008-2-24 23:39

  1. :test
  2. cls
  3. echo 进入磁盘自动分区程序,您想将磁盘分成几个分区?
  4. echo 请输入分区数:
  5. set ParNum=
  6. set /p ParNum=
  7. if not defined ParNum goto test
  8. set "ParNum=%ParNum:"=%"
  9. if not defined ParNum goto test
  10. echo "%ParNum%"|findstr "^[0-9][0-9]$"&&(if %ParNum% gtr 10 goto test)||goto test
  11. echo 您输入的是一个小于10的数字
  12. pause
复制代码

作者: icevan    时间: 2008-2-25 00:31
原帖由 namejm 于 2008-2-24 11:39 PM 发表

:test
cls
echo 进入磁盘自动分区程序,您想将磁盘分成几个分区?
echo 请输入分区数:
set ParNum=
set /p ParNum=
if not defined ParNum goto test
set "ParNum=%ParNum:"=%"
if not defined ParNu ...

高手来咯..
麻烦能不能讲解下.太复杂了....
作者: icevan    时间: 2008-2-25 12:17
:a
set /p select=请输入分区数:
set /a select=%select%-0
if %select% equ 0 goto error
if %select% gtr 10 goto error
echo 你将要把硬盘分成%select%个区
pause
goto end

:error
echo 输入错误,请重新输入
goto a

:end
exit

重新改了下.可以输入空格不会跳出
但输入数字和字母的组合会出错比如.0A.还有8进制的无效数字8,9等.

还有一个最重要的问题.在DOS下不能正常使用.包括3楼的.
作者: namejm    时间: 2008-2-25 17:23
  纯DOS不支持 set /p 语句。
作者: 狂野咆哮    时间: 2008-2-25 20:48
原帖由 icevan 于 2008-2-24 11:02 PM 发表
最简单的方法.
开始加上"echo 请输入1,2,3等不大于10的数字,输入其他字符,后果自负."
第二种
:a
set /p select=请输入分区数:
set /a select=%select%-0
if %select%==1 goto 1
if %select%==2 goto 2
...

我用的就是这种方法。
分区大小我打算用diskpart结合用户输入参数来实现。
不过目前尚未成功……
作者: 狂野咆哮    时间: 2008-2-25 20:54
标题: 回复 #5 icevan 的帖子
啊!
我光试了字母,没想到8进制和16进制的问题,多谢提醒了。看来还得好好研究一番。

这个批处理是PE2.0下的,不是dos。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3