Board logo

标题: [文本处理] 【已解决】批处理如何用类似elif判断一串字符在不在输入的变量内? [打印本页]

作者: 459500160    时间: 2021-2-19 17:33     标题: 【已解决】批处理如何用类似elif判断一串字符在不在输入的变量内?

本帖最后由 459500160 于 2021-2-20 21:52 编辑
  1. :start
  2. cls
  3. set /p n=所在部门:
  4. set /p m=英文名:
  5. set name=DB%n%-%m%
  6. echo %name%
  7. set /p choise=确认无误按Y,任意键返回
  8. if %choise%=="y" (goto Modification) else (go to start)
  9. :Modification
  10. echo 你是个大逗逼
  11. if /i not "%name:rs=%"=="%name%" (echo 管人的就是牛逼) else if /i not "%name:cw=%"=="%name%" (echo 管钱的是大佬) else (echo 苦逼的小职员)
复制代码

作者: 459500160    时间: 2021-2-19 17:34

请忽略输入错误的英文哈
作者: cutebe    时间: 2021-2-19 17:48

  1. if /i not "%name:RS=%"=="%name%" echo 人事
  2. if /i not "%name:CW=%"=="%name%" echo 财务
复制代码

作者: 459500160    时间: 2021-2-19 18:01

回复 3# cutebe


   看得不是很明白,能说得详细点吗?还有突然想到for循环,不知道能不能在这里用上,我先自己测试下看看,谢谢大佬的回复
作者: cutebe    时间: 2021-2-19 21:10

本帖最后由 cutebe 于 2021-2-19 21:15 编辑
  1. if /i "%name:RS=%" neq "%name%" echo 人事
  2. if /i "%name:CW=%" neq "%name%" echo 财务
复制代码
第一句表示:如果 删除RS后的字串name("%name:RS=%"),与原字串("%name%"),二者对比有差异 说明原字串中含有RS子串。

"%name:RS=%"                表示字符串替换:RS换成空                //意思就相当于删除RS
"%name:RS=%" neq "%name%" 表示条件:不相同    //相当于前面的not ==  (not "%name:CW=%"=="%name%")
作者: 459500160    时间: 2021-2-19 22:40

回复 5# cutebe


    谢谢大佬的解答,明白了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2