Board logo

标题: [已解决]批处理怎么摆脱call实现多层嵌套? [打印本页]

作者: JooKin    时间: 2011-11-15 16:47     标题: [已解决]批处理怎么摆脱call实现多层嵌套?

在这个帖子里面看到的:
http://bbs.bathome.net/viewthrea ... 7%CF%B0%B1%CA%BC%C7
  1. for %%z in (!tmp!) do echo !%%z!
  2. ::目前已知的摆脱call实现多层变量嵌套的最好方法,不少人用
复制代码
可是我的例子中就出问题了:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (1 2 3 4) do (
  3. set "x=%%i#"
  4. set "y=1#2#3#4#"
  5. call,set "z=%%y:!x!=%%"
  6. REM for %%j in ("!x!") do set "z=!y:%%~i=!"
  7. echo !z!
  8. )
  9. pause
复制代码
用CALL的话结果是:
  1. 2#3#4#
  2. 1#3#4#
  3. 1#2#4#
  4. 1#2#3#
  5. 请按任意键继续. . .
复制代码
用for的话结果是:
  1. #2#3#4#
  2. 1##3#4#
  3. 1#2##4#
  4. 1#2#3##
  5. 请按任意键继续. . .
复制代码
也就是说用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