Board logo

标题: [文本处理] 批处理怎样使用变量的引用来截取字符串? [打印本页]

作者: xiaoyang1141    时间: 2011-9-27 21:53     标题: 批处理怎样使用变量的引用来截取字符串?

先看代码:
  1. set temp=abcd99efghijklmn
  2. set yy=%temp:~4,2%
  3. echo %yy%
复制代码
以上“%temp:~4,2%”中怎样使用变量来取代4和2?
我想用一些具有一定规则的变量来取代其中的4和2,但是不知道怎么弄。
请各位帮忙。
谢谢。
作者: awk    时间: 2011-9-27 22:04

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set temp=abcd99efghijklmn
  4. set a=4
  5. set b=2
  6. set yy=!temp:~%a%,%b%!
  7. echo !yy!
复制代码

作者: xiaoyang1141    时间: 2011-9-27 22:24

回复 2# awk
这种方法的确行,问题是怎么处理!temp:~!a!,!b!!这样的情况呢。
作者: awk    时间: 2011-9-27 22:28

回复 3# xiaoyang1141
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set temp=abcd99efghijklmn
  4. set a=4
  5. set b=2
  6. call set yy=%%temp:~!a!,!b!%%
  7. echo !yy!
复制代码

作者: xiaoyang1141    时间: 2011-9-27 22:43

回复 2# awk
谢谢,今天又学到一些东西了。
作者: ArdentMan    时间: 2011-9-28 07:57

本帖最后由 ArdentMan 于 2011-9-28 08:00 编辑

Call还是影响效率建议采用将变量转换成For变量的方法:
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "Temp=abcdefghijklmnopqrstuvwxyz"
  3. For /L %%i In (1,1,5) Do (
  4.   Set /A a=!random!%%26,b=!random!%%3+1
  5.   For %%j In (!a!) Do (
  6.     For %%k In (!b!) Do Echo !Temp:~%%j,%%k!
  7.   )
  8. )
  9. Pause>Nul
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2