标题: [文本处理] [已解决]批处理BAT变量延迟扩展为何出错? [打印本页]
作者: changedirectory 时间: 2014-2-13 22:48 标题: [已解决]批处理BAT变量延迟扩展为何出错?
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1-2" %%i in (1.txt) do (
- if not "%%i"=="%%j" (
- echo %%i %%j>>2.txt
- ) else (
- set str=%%i&set var=!str:~0,2!
- echo !str:!var!=-! !str:!var!=-!>>2.txt
- )
- )
-
- pause
复制代码
其中echo !str:!var!=-! !str:!var!=-!,老是出错,正确的应该怎么写,谢谢!
作者: xxpinqz 时间: 2014-2-13 23:14
这样看看- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=1-2" %%i in (1.txt) do (
- if not "%%i"=="%%j" (
- echo %%i %%j
- ) else (
- set "str=%%i"
- for %%a in ("!str:~,2!") do echo !str:%%~a=-! !str:%%~a=-!
- )
- )>>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 |