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

[文本处理] 批处理怎样使用变量的引用来截取字符串?

[复制链接]
发表于 2011-9-27 21:53:53 | 显示全部楼层 |阅读模式
先看代码:
  1. set temp=abcd99efghijklmn
  2. set yy=%temp:~4,2%
  3. echo %yy%
复制代码
以上“%temp:~4,2%”中怎样使用变量来取代4和2?
我想用一些具有一定规则的变量来取代其中的4和2,但是不知道怎么弄。
请各位帮忙。
谢谢。
发表于 2011-9-27 22:04:25 | 显示全部楼层
  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!
复制代码
 楼主| 发表于 2011-9-27 22:24:14 | 显示全部楼层
回复 2# awk
这种方法的确行,问题是怎么处理!temp:~!a!,!b!!这样的情况呢。
发表于 2011-9-27 22:28:27 | 显示全部楼层
回复 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!
复制代码
 楼主| 发表于 2011-9-27 22:43:55 | 显示全部楼层
回复 2# awk
谢谢,今天又学到一些东西了。
发表于 2011-9-28 07:57:23 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 03:08 , Processed in 0.017783 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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