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

[代码合集] [已解决]批处理可以/不能对if(判断条件)和for中的%%i使用哪些操作?

本帖最后由 snkJC08 于 2012-11-2 15:49 编辑

if中:
我这样使用会出错:set str1=string123456&& echo !str1! && if !str1:~-6,2!==123456 (echo 0000) else (echo 111)
但是这样就没错:set str1=string123456&& echo !str1! && if !str1:~-6!==123456 (echo 0000) else (echo 111)

for中:
这样使用判断的时候得到的值不是想要的值:for %%i in (*.txt) do if !%%i:~13!==!n! ( echo %%i ) else (echo 文件名不匹配)        ::这里判断的时候!%%I:~13!得到的值我开始使用echo输出为:~13
同上面if中一样,如果这样使用也会出错:for %%i in (*.txt) do if !%%i:~-6,2!==!n! ( echo %%i ) else (echo 文件名不匹配)

这样使用可以正确得到:for %%i in (*.txt) do set str=%%i&& if !str:~13!==!n! ( echo %%i ) else (echo 文件名不匹配)

希望高手们能解惑!可以/不能对if(判断条件)和for中的%%i使用哪些操作!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# tmplinshi


    谢谢!原来如此啊!这个种情况只会在if和for里面出现嘛?
因为我这样使用就不会错:
  1. set str1=string123456
  2. set num=%str1:~-6,2%&& echo !num!
复制代码

TOP

回复 2# tmplinshi


    还有就是
  1. for %%i in (*.txt) do if !%%i:~13!==!n! ( echo %%i ) else (echo 文件名不匹配)
  2. ::这里判断的时候!%%I:~13!得到的值我开始使用echo输出为:~13
复制代码
这是为什么啊?不能使用%%i操作嘛?

TOP

回复 6# CrLf


    哦!谢谢了啊!

TOP

回复 5# tmplinshi


    谢谢解答!

TOP

返回列表