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

[其他] 【已解决】批处理获取变量最后一位是数字还是字母,如何用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执行。。

回复 23# Batcher


    谢谢大神了。。。。。。

TOP

  1. set p=1a445a1d1
  2. echo %p%|findstr "[0-9]$" >nul && echo 最后一位是数字 || echo 最后一位不是数字
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 21# noender
  1. @echo off
  2. set "p=1a445a1d1"
  3. if %p:~-1% geq 0 (
  4.     if %p:~-1% leq 9 (
  5.         echo 最后一位是数字
  6.     ) else (
  7.         echo 最后一位不是数字
  8.     )
  9. ) else (
  10.     echo 最后一位不是数字
  11. )
  12. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 17# Batcher


    大神。。哪你可以帮我写一个我需要的。。。判断数值的最后一位是字母还是数字的。。BAT语句的吗。。。带IF的。。。。。

TOP

应该整体是错的。。也有可能我上面的哪一串数字。本身就是有问题的。只是显示出来是对的。也有可能是假像吧。。是不是我的输入显示错误导致误看了。。。

TOP

回复 15# Batcher


    大大。。。。你把你的  set p=1a445a1d1   这个改成这个。。你看就是对了。。。怪头。为什么这个数值是显示正确的呢。哈。

TOP

回复 17# Batcher


    真是奇怪。。我把原来的字。改了后。。也是错误了。。看来。。是真的不行的。。也不知道原来的为什么可以。见鬼了。

TOP

回复 14# noender


你试过下面这个测试用例不,确定你的写法可以判断出“最后一位是数字还是字母”吗?

C:\>set p=1A

C:\>echo %p%|findstr /i "\d$" &&echo 字母||echo 数字
数字
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 15# Batcher


    Batcher  老大,,就是说得到一个值。。可以判断出这值的最后一位是数字还是字母。有这个效果就行了。。不过需要IF语句。。谢谢老大了。

TOP

回复 14# noender


    不知道你的语句想表达什么意思,正如6楼说过的findstr不支持\d这种语法,你坚持用它是无法得到正确结果的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


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

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

TOP

回复 12# noender


    是的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# Batcher


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

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

TOP

回复 10# noender


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

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

C:\>echo abc123|findstr /i "\d$" &&echo 字母||echo 非字母开头
非字母开头
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表