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

[其他] [分享]批处理使用if命令需注意

无意中发现,大家测试看看。。。
先看一段代码,不要运行,你认为代码能正确运行吗?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=1234
  4. if !t!==1234 echo ok
  5. if !t:~2!==34 echo ok
  6. if !t:~1,1!==2 echo ok
  7. pause
复制代码
错误出在最后一句,给它们都加上引号就没问题了,用%%引用变量也没问题
于是总结出:
用 if 判断变量时,最好给它加上引号,否则直接在if中使用变量截取就不能使用含有逗号的截取方式。
技术问题请到论坛发帖求助!

赞同,建议大家养成使用引号的好习惯。

逗号跟空格类似,解释器在进行词法分析的时候会认为它是分隔符。
  1. @echo off
  2. for,%%a,in,(a,b,c),do,echo,%%a
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

一直都加双引号的啊,特别是在截取中……
听说数字不用加引号?

TOP

以前在vbt曾被此暗桩阴过,怀念ing...
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

用^给转义一下也可以
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=1234
  4. if !t!==1234 echo ok
  5. if !t:~2!==34 echo ok
  6. if !t:~1^,1!==2 echo ok
  7. pause
复制代码
努力学习,努力挣分

TOP

又学习到了一课!哈哈……

TOP

学到,感谢楼主分享!!

TOP

学习了。。谢谢分享。。

TOP

返回列表