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

[已解决]批处理怎么摆脱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每次都少替换了个#,搞不懂到底问题出在哪里?
1

评分人数

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

本帖最后由 yyykkkyyyy 于 2011-11-15 17:15 编辑

粗心!
rem那句根本就没去 #
%%i  还是 %%j
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

回复 2# yyykkkyyyy


    哇又见yyykkkyyyy大人!可是REM那句为什么没去#呢?!x!不是包含了#吗?

TOP

回复 3# JooKin


    因为你把 %%~j 写成 %%~i 了

TOP

感谢CrLf版主提醒!也感谢yyykkkyyyy !

TOP

返回列表