找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31094|回复: 12

[其他] for循环判断问题

[复制链接]
发表于 2016-11-25 10:51:16 | 显示全部楼层 |阅读模式
  1. echo off
  2. setlocal enabledelayedexpansion
  3. set var=haha,haha1,haha2
  4. for %%i in (%var%) do (
  5.         echo %%i
  6. )
  7. pause
复制代码
执行此代码输出结果为
   这个没什么问题,然后稍加改动变成如下
  1. echo off
  2. setlocal enabledelayedexpansion
  3. set var=haha,haha1,haha2
  4. if %var% = haha (
  5.         echo haha
  6.         goto :eof
  7. )
  8. for %%i in (%var%) do (
  9.         echo %%i
  10. )
  11. pause
复制代码
就无法正确执行了,输出结果为

请教各位大神,这是什么原因,怎么解决?
发表于 2016-11-25 11:08:48 | 显示全部楼层
for:关我什么事,lz自己不学好基础,连判断都不会写
 楼主| 发表于 2016-11-25 14:48:03 | 显示全部楼层
回复 2# pcl_test


    写的有问题吗?你是指那个判断进不去?
发表于 2016-11-25 15:24:46 | 显示全部楼层
回复 1# zhaokeistc


    我猜想LZ是笔误,丢了if中的一个等号,
可逗号又在给你捣蛋。
 楼主| 发表于 2016-11-25 17:23:29 | 显示全部楼层
回复 4# CommandBatCmd


    那个确实笔误少些了个=号    不过没影响      那个判断肯定不会进        主要是感觉有了那个     for的()对应出了问题     不知道什么原因    也不知道怎么解决
发表于 2016-11-25 19:12:41 | 显示全部楼层
04:if %var% = haha (...)
04:if "%var%" == "haha" (...)
发表于 2016-11-25 21:09:49 | 显示全部楼层
回复 5# zhaokeistc


    一个等号是赋值运算,两个等号是比较运算;
    逗号直接暴露在命令行上为特殊字符(命令分隔符),用双引号包括才不会产生歧义;
    像楼上的那样修改代码后,逗号就不兴风作浪了。
发表于 2016-11-25 21:19:36 | 显示全部楼层
本帖最后由 523066680 于 2016-11-25 21:25 编辑

谜之语言

  • my @array = qw/ haha haha1 haha2 /;
  • exit if ( "haha3" ~~ @array );
  • print join("\n", @array);
发表于 2016-11-25 23:01:14 | 显示全部楼层
回复 8# 523066680 perl就是优雅,
发表于 2016-11-27 20:41:13 | 显示全部楼层
  1. @echo off
  2. set var=haha,haha1,haha2
  3. if "%var%" equ "haha" (
  4.     echo haha
  5.     goto :end
  6. )
  7. for %%i in (%var%) do (
  8.     echo,%%i
  9. )

  10. :end
  11. pause
复制代码
 楼主| 发表于 2016-11-28 10:09:40 | 显示全部楼层
回复 7# CommandBatCmd


    不行的,我那个少个等号确实是笔误,真实代码里是没少的,而且我的逗号就是要作为分隔符来使用的,所以不能有引号。

实际上我是想遍历那个var,如图1是可以正常遍历的,但是在之前加了个if判断后,如图2就不能遍历了。
发表于 2016-11-28 10:14:08 | 显示全部楼层
回复 11# zhaokeistc
为何不学批处理基础,if比较字符串时必须加引号,必须双等号。这是基础啊!
if "%var%" == "haha"
发表于 2016-11-28 11:36:48 | 显示全部楼层
回复 11# zhaokeistc

进行遍历变量“var”,下面的代码都不需要引号,你看看
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set var=haha,haha1,haha2
  4. for %%i in (%var%) do (@rem 只要变量“var”中,有一个完全匹配“haha”的,就跳转。
  5.     if %%i==haha (echo haha&pause&goto :eof)
  6.         echo %%i
  7. )
  8. pause
复制代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set var=haha,haha1,haha2
  4. for %%i in (%var%) do (@rem 只有变量“var”的整个值完全匹配“haha”时,就跳转。
  5.     set a=!var:,=!&if !a!==%%i if %%i==haha (echo haha&pause&goto :eof)
  6.         echo %%i
  7. )
  8. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:57 , Processed in 0.020625 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表