Board logo

标题: [文本处理] 批处理if语句判断字符串是否相同 [打印本页]

作者: lihui612ld    时间: 2019-8-12 09:15     标题: 批处理if语句判断字符串是否相同

本帖最后由 lihui612ld 于 2019-8-12 09:37 编辑

if  "%%b%%c" == "%%d%%e" (echo 检查磁盘分区) else (echo. 关机了) 我这是要判断获取的变量 b c d e 是否存在想等的情况,(b c d e 会有几组数据),我需要判断每一组数据是否存在想等的情况,如果这些数据中有任意一组想等,则echo 检查磁盘分区,如果没有哪一组数据相等,则echo 关机了,功力有限,写不出来,求各位指点
作者: Batcher    时间: 2019-8-12 09:34

请举例说明一下什么是判断获取的变量 b c d e 是否存在想等的情况
作者: lihui612ld    时间: 2019-8-12 09:41

本帖最后由 lihui612ld 于 2019-8-12 09:59 编辑

回复 2# Batcher


    @echo off
for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
    if not "%%b%%c" == "%%d%%e" (echo 关机了) else (echo. 请检查磁盘)
)
我这里用了for来判断是否存在空盘,如果存在就显示检查磁盘,如果不存在就显示关机了,这里的变量 b c d e 是多组数据,需要判断如果有任意一组数据存在bc==de则显示检查磁盘,如果都不相等则显示关机了,这个脚本就是因为在for循环里面,每次都会执行几个echo
作者: Batcher    时间: 2019-8-12 10:07

回复 3# lihui612ld
  1. set flag=0
  2. for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do (
  3.     if "%%b%%c" == "%%d%%e" (
  4.         set flag=1
  5.     )
  6. )
复制代码
for循环外面通过检查flag的值来决定是检查磁盘还是关机
作者: lihui612ld    时间: 2019-8-12 10:15

回复 4# Batcher


   历害,可以实现了,能说下为什么这样写就可以吗?
作者: lihui612ld    时间: 2019-8-12 12:14

回复 4# Batcher


    了解了,我之前是把变量传出来然后判断其值是否想等,但是变量是变化的,而且有多组值,所以才会执行几次ECHO,而这里是相等的情况下才赋值给flag,这里的flag就只会有一组数值,果然思路很重要




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