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

[文本处理] [已解决]批处理BAT变量延迟扩展为何出错?

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-2" %%i in (1.txt) do (
  3.    if not "%%i"=="%%j" (
  4.       echo %%i %%j>>2.txt
  5.     ) else (
  6.       set str=%%i&set var=!str:~0,2!
  7.       echo !str:!var!=-! !str:!var!=-!>>2.txt
  8.     )
  9. )
  10. pause
复制代码
其中echo !str:!var!=-! !str:!var!=-!,老是出错,正确的应该怎么写,谢谢!
1

评分人数

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

回复 2# xxpinqz


    也想给加分的,提示超过限制了!谢谢你的帮助!

TOP

回复 7# changedirectory


看3楼第二行的字体颜色
批处理认为红色部分是一个变量,蓝色部分是另一个变量。
跟你希望的工作方式不一样。
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# DAIC


    新手,不明白什么是就近匹配?求指导!

TOP

回复 5# changedirectory


    3楼已经说的很清楚了,因为它是就近匹配的
1

评分人数

TOP

回复 3# DAIC


    你好,能说说原因吗?谢谢!

TOP

回复 2# xxpinqz


    这样,的确是可以的。能不能说为什么不能使用多重的!!

TOP

不能在一对感叹号里面使用另一对感叹号,它不会像你希望的那样工作,因为它是就近匹配的。
!str:!var!=-!

TOP

这样看看
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-2" %%i in (1.txt) do (
  3.    if not "%%i"=="%%j" (
  4.       echo %%i %%j
  5.     ) else (
  6.       set "str=%%i"
  7.       for %%a in ("!str:~,2!") do echo !str:%%~a=-! !str:%%~a=-!
  8.     )
  9. )>>2.txt
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表