![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 06:46 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » (已解决)此批处理如何实现输入中间带0的数字不被忽略.. |
| 可打印版本 865 / 13 |
| 第1楼 richercdw | 发表于 2007-06-29 17:27 |
| 初级用户 发帖 32 积分 62 | |
|
(已解决)此批处理如何实现输入中间带0的数字不被忽略.. 此批处理如何实现输入中间带0的数字不被忽略..
@echo off set /p ip=请输入: set ip=%ip:0=% echo 结果:%ip% pause 现在出现个问题。就是比如输入 10呀,101呀,108呀,那第二位的零都被忽略了。因为我要的结果是不管输入010还是10还是101。还是088。。输出结果为不带0头的数字就可以了。第二位。第三位可带零 [ Last edited by richercdw on 2007-6-29 at 05:53 PM ] |
|
| 第2楼 HAT | 发表于 2007-06-29 17:32 |
| 版主 发帖 5,017 积分 9,023 | |
|
用sed命令结合正则表达式可以搞定
但纯P就不知道了 等待高人 |
|
| 第3楼 richercdw | 发表于 2007-06-29 17:33 |
| 初级用户 发帖 32 积分 62 | |
|
期待高人的出现。。。。
|
|
| 第4楼 wudixin96 | 发表于 2007-06-29 17:34 |
| 银牌会员 发帖 931 积分 1,928 | |
|
那只能先判断变量的第一位是否是0了。然后再替换
|
|
| 第5楼 richercdw | 发表于 2007-06-29 17:36 |
| 初级用户 发帖 32 积分 62 | |
|
嗯。那代码如何写哟。。。
|
|
| 第6楼 wudixin96 | 发表于 2007-06-29 17:47 |
| 银牌会员 发帖 931 积分 1,928 | |
|
是这样吗? |
|
| 第7楼 youxi01 | 发表于 2007-06-29 17:48 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
To:楼上,如果第二个数字还是为0呢?按照你这样写,那就要循环检测了。
这样的问题,其实早讨论过了! 去除开头、中间、末尾的0的 给一段利用了 3742 斑竹的代码吧: [ Last edited by youxi01 on 2007-6-29 at 05:49 PM ] |
|
| 第8楼 wudixin96 | 发表于 2007-06-29 17:51 |
| 银牌会员 发帖 931 积分 1,928 | |
|
防止有多个0
|
|
| 第9楼 richercdw | 发表于 2007-06-29 17:52 |
| 初级用户 发帖 32 积分 62 | |
|
行了。谢谢各位高手了。。。
|
|
| 第10楼 qzwqzw | 发表于 2007-06-29 18:58 |
| 银牌会员 发帖 636 积分 2,343 | |
|
楼主的处理思路有问题
遇到用户输入的有前缀0的数字时 最好是直接提示无效数字 然后提示重新输入 而不是自作主张的去掉前缀0 除非有特别的需要才去兼容这个输入习惯 |
|
| 第11楼 richercdw | 发表于 2007-06-29 21:00 |
| 初级用户 发帖 32 积分 62 | |
|
10楼的。不是说我思路有问题。因为我是配置IP批处理中用到的。。
因为每个人的思路不一样。。有的喜欢输001这样的计算机名,有的喜欢输1这样的计算机名,这样就不统一了。所以要这个的批处理就是不管输入001还是1结果都是001 IP前头不能带零.所有只要求把前面的零给去掉.. |
|
| 第12楼 zh159 | 发表于 2007-06-29 21:33 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by wudixin96 at 2007-6-29 17:51: 罗嗦了,修改如下: &之前最好不要加空格,否则变量会带入空格 [ Last edited by zh159 on 2007-6-29 at 09:34 PM ] |
|
| 第13楼 qzwqzw | 发表于 2007-06-29 22:00 |
| 银牌会员 发帖 636 积分 2,343 | |
|
楼主
我就是因为看到变量名为IP 才想起这个问题的 我未见过任何人输入IP时喜欢加0前缀的 也许是我见到少吧 至于计算机名似乎与IP没有关系 但是你的思路显然是用计算机名设定IP地址 巧则巧矣 但带来的麻烦太多了 比如 我输入S001作为计算机名似乎没有问题 但是你的程序很可能不接受的我的输入 因为它要用计算机名组合IP地址 或许它会提示一个错误后终止 或许它会按照自己的意图修改一番 但很可能都已经走向了用户所料不到的方向 程序设计这个东西 还是应该简单些好 无法是从用户界面 还是从代码编写上 以上意见仅供参考 |
|
| 第14楼 richercdw | 发表于 2007-07-01 19:39 |
| 初级用户 发帖 32 积分 62 | |
|
我把代码编成一团了。现在成型是这样的。哈哈。乱了乱了。不过不管我怎么输入。都正确。请高看看哪有没有误。。
:OK mode con cols=50 lines=15&color 2e set aip=192.168.1. set bip=192.168.2. set cip=192.168.3. set vip=192.168.4. set mask=255.255.248.0 set gateway=192.168.4.254 set dns1=192.168.4.254 set dns2=61.130.254.34 :MENU cls echo. echo. echo A区 请按 1 echo. echo B区 请按 2 echo. echo C区 请按 3 echo. echo V区 请按 4 echo. echo. echo. :CHO set /p key= 请输入您的选择(1,2,3,4): if /i "%key%"=="1" goto A if /i "%key%"=="2" goto B if /i "%key%"=="3" goto C if /i "%key%"=="4" goto V echo. echo 选择无效,请重新输入!... echo. goto cho :A cls echo. echo. echo. echo. echo. echo. A区 echo. set /p num= 请输入计算机号: echo. if %num% GEQ 255 goto 255 :aa if "%num:~0,1%" == "0" set num=%num:~1%&goto aa set ip=%aip%%num% set num=000%num% set pcname=A%num:~-3% cls echo. echo 计算机名:%pcname% IP地址:%ip% pause reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %pcname% /f >nul reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %pcname% /f >nul reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %pcname% /f >nul reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %pcname% /f >nul reg add "HKLM\SYSTEM\CurrentControlSet\Services\NwlnkIpx\Parameters" /v VirtualNetworkNumber /t REG_DWORD /d 0x00000%IP:~10% /f >nul netsh interface ip set address name="本地连接" source=static addr=%ip% mask=%mask% >nul netsh interface ip set address name="本地连接" gateway=%gateway% gwmetric=0 >nul netsh interface ip set dns name="本地连接" source=static addr=%DNS1% register=PRIMARY >nul netsh interface ip add dns name="本地连接" addr=%DNS2% index=2 >nul reg add "HKLM\Software\iCafe8" /v ServIP /t reg_sz /d 192.168.4.221 /f >nul reg add "HKLM\Software\iCafe8" /v ServPort /t reg_dword /d 9910 /f >nul sc config MSiSCSI start= auto >nul goto fjwblm :255 echo 大于255啦...重新输入一次哇... goto MENU 后面的就复制了...太长了... |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |