Board logo

标题: [文本处理] [已解决]批处理BAT变量延迟扩展为何出错? [打印本页]

作者: changedirectory    时间: 2014-2-13 22:48     标题: [已解决]批处理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!=-!,老是出错,正确的应该怎么写,谢谢!
作者: xxpinqz    时间: 2014-2-13 23:14

这样看看
  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
复制代码

作者: DAIC    时间: 2014-2-14 09:37

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

回复 2# xxpinqz


    这样,的确是可以的。能不能说为什么不能使用多重的!!
作者: changedirectory    时间: 2014-2-14 10:40

回复 3# DAIC


    你好,能说说原因吗?谢谢!
作者: DAIC    时间: 2014-2-14 11:08

回复 5# changedirectory


    3楼已经说的很清楚了,因为它是就近匹配的
作者: changedirectory    时间: 2014-2-14 13:09

回复 6# DAIC


    新手,不明白什么是就近匹配?求指导!
作者: Batcher    时间: 2014-2-14 14:32

回复 7# changedirectory


看3楼第二行的字体颜色
批处理认为红色部分是一个变量,蓝色部分是另一个变量。
跟你希望的工作方式不一样。
作者: changedirectory    时间: 2014-2-14 16:36

回复 2# xxpinqz


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




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