无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3803|回复: 7
打印 上一主题 下一主题

【求助】怎样确保cmd批处理下输入的参数是数字

[复制链接]
跳转到指定楼层
1#
发表于 2008-2-23 12:47:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
echo 进入磁盘自动分区程序,您想将磁盘分成几个分区?
         echo 请输入分区数:
         rem 输入分区数,
         set /p ParNum=

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

望各位大侠不吝指点

[ 本帖最后由 狂野咆哮 于 2008-2-23 06:31 PM 编辑 ]
2#
发表于 2008-2-24 23:02:59 | 只看该作者
最简单的方法.
开始加上"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 编辑 ]
回复

使用道具 举报

3#
发表于 2008-2-24 23:39:52 | 只看该作者

  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
复制代码
回复

使用道具 举报

4#
发表于 2008-2-25 00:31:01 | 只看该作者
原帖由 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 ...

高手来咯..
麻烦能不能讲解下.太复杂了....
回复

使用道具 举报

5#
发表于 2008-2-25 12:17:30 | 只看该作者
: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楼的.
回复

使用道具 举报

6#
发表于 2008-2-25 17:23:09 | 只看该作者
  纯DOS不支持 set /p 语句。
回复

使用道具 举报

7#
 楼主| 发表于 2008-2-25 20:48:27 | 只看该作者
原帖由 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结合用户输入参数来实现。
不过目前尚未成功……
回复

使用道具 举报

8#
 楼主| 发表于 2008-2-25 20:54:53 | 只看该作者

回复 #5 icevan 的帖子

啊!
我光试了字母,没想到8进制和16进制的问题,多谢提醒了。看来还得好好研究一番。

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-6 19:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表