Board logo

标题: [文本处理] 批处理命令set中怎样使用转义符? [打印本页]

作者: yzlsc    时间: 2012-3-18 13:21     标题: 批处理命令set中怎样使用转义符?

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
复制代码

作者: find    时间: 2012-3-18 13:25

http://www.bathome.net/thread-2899-1-1.html
作者: yzlsc    时间: 2012-3-18 14:00

回复 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
复制代码





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