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

[文本处理] [已解决]截取字符来显示中文行号的批处理为何显示不出截取的字符?

[复制链接]
发表于 2011-5-28 17:30:59 | 显示全部楼层 |阅读模式

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=1
  4. for /f %%i in (1.txt) do (
  5. set a= 一二三四五六七八九十
  6. set b=%a:~!n!,1%
  7. echo !b! %%i
  8. set /a n=!n!+1
  9. )
  10. pause >nul
复制代码
为什么显示的截取不能截到东西呢.在群里问MAN老大说.语法不对..但又没报错,.
这个是老大写的...有人能告诉我一下.为什么不能截到.到底哪个语法错了吗..虽然能问到对的代码.但我只是想明白为什么会出问题.抱歉.

  1. @echo off

  2. setlocal enabledelayedexpansion

  3. set /a n=1
  4. for /f %%i in (1.txt) do (

  5. set a= 一二三四五六七八九十

  6. for %%a in (!n!) do set "b=!a:~%%a,1!"
  7. echo !b! %%i
  8. set /a n+=1

  9. pause

  10. )
复制代码

评分

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

查看全部评分

发表于 2011-5-28 18:04:40 | 显示全部楼层
%str%是在for语句执行之前就已经被解释了的,因为此时变量a不存在,所以“%a:~!n!,1%”被解释为“~!n!,1”,而!n!是在for循环内被解释的,所以“~!n!,1”就被解释为“~1,1”、“~2,1”...等等
 楼主| 发表于 2011-5-28 18:07:47 | 显示全部楼层
那我把a在FOR外面就SET行不行呢?
或者能帮我稍微改一下吗.....
 楼主| 发表于 2011-5-28 18:11:02 | 显示全部楼层
加了变量延时,不是能得到FOR里面设置的变量值么.
发表于 2011-5-28 18:15:32 | 显示全部楼层
楼主不是自己贴了解决方案吗?
要想在语块内实现变量嵌套,必须使用能够“变”的变量,这时候用%a%就不是很合适了,但是我们既要动态地读取变量n,又要动态地读取变量a,可是单靠“!”变量延迟又不够用,所以一般有几种解决方案,其中最经济实惠的就是将普通变量!n!通过for转换为%%a参数变量:
for %%a in (!n!) do set "b=!a:~%%a,1!"
 楼主| 发表于 2011-5-28 18:17:43 | 显示全部楼层
谢谢,,,这才是想要的嘛...新手不是很懂...谢谢指导.
 楼主| 发表于 2011-5-28 18:20:53 | 显示全部楼层
动态的变量里面再有动态的变量的时候就要用这个吧..不能!里面再套!号....
发表于 2011-5-28 18:23:22 | 显示全部楼层
动态的变量里面再有动态的变量的时候就要用这个吧..不能!里面再套!号....
wangqi0077 发表于 2011-5-28 18:20

可以仔细想一想,!号是成对解释的,cmd又是从左向右进行判断的,如果把!a:~%n%,1!写成!a:~!n!,1!时,cmd会把它怎么划分呢?
 楼主| 发表于 2011-5-28 18:24:39 | 显示全部楼层
嗯.有道理 啊...这方面有没有详细的教程啊.老大..
发表于 2011-5-28 18:29:21 | 显示全部楼层
善用搜索,会有很多收获,这句话不仅仅指论坛的搜索功能
【教程汇总】批处理中的变量延迟扩展、变量嵌套:
http://bbs.bathome.net/viewthrea ... 4%C1%BF%D1%D3%B3%D9
批处理变量延迟详解:
http://bbs.bathome.net/viewthrea ... 4%C1%BF%D1%D3%B3%D9
 楼主| 发表于 2011-5-28 18:30:47 | 显示全部楼层
收到..谢谢领导..
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 06:16 , Processed in 0.018644 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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