批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[其他] 【已解决】批处理获取变量最后一位是数字还是字母,如何用IF ELSE

本帖最后由 noender 于 2019-8-21 15:11 编辑

set /p p=
echo %p%|findstr "^[a-Z]" &&echo 字母||echo 非字母开头
echo %p%|findstr "^[0-9]*$" &&echo 纯数字
mxxcgzxxx大神语句

上面的代码是论坛里别人贴出来的。。上面的功能是首字的判断。。 我下面修改了一下。
echo %p%|findstr /i "\d$" &&echo 字母||echo 非字母开头
这个是未字的判断。。。请问一下。。里面增加条件语句。。IF与ELSE。要怎么增加,,我想在判断得到是字母的话。。GOTO执行。。。。判断得到是数字的话GOTO执行。。

  1. echo %p%|findstr /i "\d$"
  2. if errorlevel 1 (
  3.     echo 非字母开头
  4.     goto :xx
  5. ) else (
  6.     echo 字母
  7.     goto :oo
  8. )
复制代码
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

回复 2# Batcher


    Batcher   老大,,,谢谢你的回复,,我去试试,,,我想问一下。。这个goto  :xx      与goto   xx。。这个两者有什么区别,,,,,,,,,,,,,,,,,,,,,,,应该是一样的效果的吧。。

TOP

echo %p%|findstr "[0-9]$" &&echo 是数字||echo 非数字

TOP

回复 2# Batcher


    大神。。运行后。。输入数字是。。非字母。没有错,,,,,,,,,,,,,,但是输入字母。。还是提示非字母。。。。不知道是为什么。。

TOP

回复 5# noender


    因为顶楼你改的代码是错的,findstr不支持\d这种正则
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

回复 6# Batcher


    echo %p%|findstr /i "\d$" &&echo 字母||echo 非字母开头

但是这样是可以的呢。我测试过呢。。。哎。。哪按着你上面给我的IF语句。。是可以实现的吗。

TOP

回复 6# Batcher


    大大,,哪请问一下。你在2楼帮我更改过的代码。。需要怎么修改一下才可以实现。。我上面提过的条件的呢。。

TOP

回复 7# noender


    请把你自己写的这个命令的测试用例、测试结果发出来我也试试
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

回复 9# Batcher


    echo %p%|findstr /i "\d$" &&echo 字母||echo 非字母开头
这句我已经测试过了。一切OK的。。。你上次给我的2楼的哪个。。我也测试过了。。一直是提示。非字母。。。还是老大你是需要我提供图?

TOP

回复 10# noender


不知道你是怎么测试的。我测试你的命令结果如下显然是错误的:

C:\>echo 123\d|findstr /i "\d$" &&echo 字母||echo 非字母开头
123\d
字母

C:\>echo abc123|findstr /i "\d$" &&echo 字母||echo 非字母开头
非字母开头
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

回复 11# Batcher


    好像也是错的。。等我去开一下。上次用过的电脑。我去测试一下先。。我记得很清楚的。。是可以的。。。。

版本。。。还有一个问题。。请教一下。。。。
A.EXE  直接运行与   START  A.EXE   运行     是不是前者,是运行后如果有留着窗口需要关的话。应该是会一直停留着。等着我们点一下的吧。。。。后者是。。运行后。。窗口是等着我们点。。但是批处理是继续往下走下去了。??

TOP

回复 12# noender


    是的。
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

回复 9# Batcher


    今天总于是忙完了。。我又测试了是可以的。。但是大神你的IF中是不行的。。我的语句是如下的。。

set p=1a445a1d1
echo %p%|findstr /i "\d$" &&echo 字母||echo 数字

TOP

回复 14# noender


    不知道你的语句想表达什么意思,正如6楼说过的findstr不支持\d这种语法,你坚持用它是无法得到正确结果的。
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

返回列表