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

[文本处理] [已解决]批处理BAT变量延迟扩展为何出错?

[复制链接]
发表于 2014-2-13 22:48:48 | 显示全部楼层 |阅读模式
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-2" %%i in (1.txt) do (
  3.    if not "%%i"=="%%j" (
  4.       echo %%i %%j>>2.txt
  5.     ) else (
  6.       set str=%%i&set var=!str:~0,2!
  7.       echo !str:!var!=-! !str:!var!=-!>>2.txt
  8.     )
  9. )

  10. pause
复制代码
其中echo !str:!var!=-! !str:!var!=-!,老是出错,正确的应该怎么写,谢谢!

评分

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

查看全部评分

发表于 2014-2-13 23:14:55 | 显示全部楼层
这样看看

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-2" %%i in (1.txt) do (
  3.    if not "%%i"=="%%j" (
  4.       echo %%i %%j
  5.     ) else (
  6.       set "str=%%i"
  7.       for %%a in ("!str:~,2!") do echo !str:%%~a=-! !str:%%~a=-!
  8.     )
  9. )>>2.txt
复制代码
发表于 2014-2-14 09:37:43 | 显示全部楼层
不能在一对感叹号里面使用另一对感叹号,它不会像你希望的那样工作,因为它是就近匹配的。
!str:!var!=-!
 楼主| 发表于 2014-2-14 10:40:38 | 显示全部楼层
回复 2# xxpinqz


    这样,的确是可以的。能不能说为什么不能使用多重的!!
 楼主| 发表于 2014-2-14 10:40:56 | 显示全部楼层
回复 3# DAIC


    你好,能说说原因吗?谢谢!
发表于 2014-2-14 11:08:36 | 显示全部楼层
回复 5# changedirectory


    3楼已经说的很清楚了,因为它是就近匹配的

评分

参与人数 1技术 +1 收起 理由
changedirectory + 1 谢谢!

查看全部评分

 楼主| 发表于 2014-2-14 13:09:35 | 显示全部楼层
回复 6# DAIC


    新手,不明白什么是就近匹配?求指导!
发表于 2014-2-14 14:32:41 | 显示全部楼层
回复 7# changedirectory


看3楼第二行的字体颜色
批处理认为红色部分是一个变量,蓝色部分是另一个变量。
跟你希望的工作方式不一样。

评分

参与人数 1技术 +1 收起 理由
changedirectory + 1 谢谢!明白了。

查看全部评分

 楼主| 发表于 2014-2-14 16:36:19 | 显示全部楼层
回复 2# xxpinqz


    也想给加分的,提示超过限制了!谢谢你的帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 02:09 , Processed in 0.032140 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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