找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17243|回复: 4

[已解决]批处理怎么摆脱call实现多层嵌套?

[复制链接]
发表于 2011-11-15 16:47:49 | 显示全部楼层 |阅读模式
在这个帖子里面看到的:
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每次都少替换了个#,搞不懂到底问题出在哪里?

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-11-15 17:04:41 | 显示全部楼层
本帖最后由 yyykkkyyyy 于 2011-11-15 17:15 编辑

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

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-11-15 17:11:11 | 显示全部楼层
回复 2# yyykkkyyyy


    哇又见yyykkkyyyy大人!可是REM那句为什么没去#呢?!x!不是包含了#吗?
发表于 2011-11-15 17:23:48 | 显示全部楼层
回复 3# JooKin


    因为你把 %%~j 写成 %%~i 了
 楼主| 发表于 2011-11-15 17:40:15 | 显示全部楼层
感谢CrLf版主提醒!也感谢yyykkkyyyy !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:51 , Processed in 0.025748 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表