[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理命令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
复制代码

TOP

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

TOP

返回列表