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

[文本处理] 批处理命令set中怎样使用转义符?

[复制链接]
发表于 2012-3-18 13:21:14 | 显示全部楼层 |阅读模式
set命令中怎样使用转义符?
假设文件名为“长度不定的中英文字符串+长度不定的数字”这种形式,比如test.bat、test1.bat、mytest12.bat、测试123.bat等等,怎样才能取出文件名中的数字呢?下面set num=%name:~%L%%这行代码怎样使用转义符?
  1. ::4
  2. rem 上一行中的数字为假设的文件名中字符串部分的长度
  3. @echo off
  4. set /p L=<%0
  5. set L=%L::=%
  6. set name=%~n0
  7. set num=%name:~%L%%
  8. rem 上一行代码中怎样使用转义符才能使效果等同于执行set num=%name:~4%呢?
  9. echo num的值是%num%
  10. pause & exit
复制代码
发表于 2012-3-18 13:25:12 | 显示全部楼层
 楼主| 发表于 2012-3-18 14:00:43 | 显示全部楼层
回复 2# find

谢谢,原来是要使用变量延迟。前不久我刚看过《for语句从入门到精通》这篇文章,可是没能完全理解,以为只有在FOR语句中才需要用到变量延迟,没想到这里也要用到。下面的代码虽已修改测试通过,但还没完全理解。
  1. ::4
  2. @rem 上一行中的数字为假设的文件名中字符串部分的长度
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. set /p L=<%0
  6. set L=%L::=%
  7. set name=%~n0
  8. set num=!name:~%L%!
  9. echo 字符串部分的长度是 %num%
  10. pause & exit
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 19:55 , Processed in 0.017393 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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