标题: [已解决]批处理怎么摆脱call实现多层嵌套? [打印本页]
作者: JooKin 时间: 2011-11-15 16:47 标题: [已解决]批处理怎么摆脱call实现多层嵌套?
在这个帖子里面看到的:
http://bbs.bathome.net/viewthrea ... 7%CF%B0%B1%CA%BC%C7- for %%z in (!tmp!) do echo !%%z!
-
- ::目前已知的摆脱call实现多层变量嵌套的最好方法,不少人用
复制代码
可是我的例子中就出问题了:- @echo off&setlocal enabledelayedexpansion
- for %%i in (1 2 3 4) do (
- set "x=%%i#"
- set "y=1#2#3#4#"
- call,set "z=%%y:!x!=%%"
- REM for %%j in ("!x!") do set "z=!y:%%~i=!"
- echo !z!
- )
- pause
复制代码
用CALL的话结果是:- 2#3#4#
- 1#3#4#
- 1#2#4#
- 1#2#3#
- 请按任意键继续. . .
复制代码
用for的话结果是:- #2#3#4#
- 1##3#4#
- 1#2##4#
- 1#2#3##
- 请按任意键继续. . .
复制代码
也就是说用for每次都少替换了个#,搞不懂到底问题出在哪里?
作者: yyykkkyyyy 时间: 2011-11-15 17:04
本帖最后由 yyykkkyyyy 于 2011-11-15 17:15 编辑
粗心!
rem那句根本就没去 #
%%i 还是 %%j
作者: JooKin 时间: 2011-11-15 17:11
回复 2# yyykkkyyyy
哇又见yyykkkyyyy大人!可是REM那句为什么没去#呢?!x!不是包含了#吗?
作者: CrLf 时间: 2011-11-15 17:23
回复 3# JooKin
因为你把 %%~j 写成 %%~i 了
作者: JooKin 时间: 2011-11-15 17:40
感谢CrLf版主提醒!也感谢yyykkkyyyy !
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |