Board logo

标题: [文本处理] [已解决]批处理set命令怎样把字符串的前三位读取出来? [打印本页]

作者: WecanHuang    时间: 2011-2-20 17:56     标题: [已解决]批处理set命令怎样把字符串的前三位读取出来?

我想将某段字符串的前三位读取出来,用以下三种方案来做,结果发现不一样,为什么第三种才行呢?前面两种的问题在哪?
  1. @echo off
  2. set str=abcdefgh
  3. set m=0
  4. set var=%str:~%m%,3%
  5. echo %var%
  6. pause
  7. set var=%%str:~%m%,3%%
  8. echo %var%
  9. pause
  10. call set var=%%str:~%m%,3%%
  11. echo %var%
  12. pause
复制代码
[]

[ 本帖最后由 WecanHuang 于 2011-2-21 10:51 编辑 ]
作者: wc726842270    时间: 2011-2-20 19:03

  1. @echo off&setlocal enabledelayedexpansion
  2. set str=abcdefgh
  3. set m=0
  4. set var=!str:~%m%,3!
  5. echo %var%
  6. pause
  7. set var=!!!str:~%m%,3!!!
  8. echo %var%
  9. pause
  10. call set var=%%str:~%m%,3%%
  11. echo %var%
  12. pause
复制代码

作者: wc726842270    时间: 2011-2-20 19:06

自已对比一下区别。另外多做一些试验
关于ECHO %var%自已在两旁多加几次%就行了
作者: WecanHuang    时间: 2011-2-20 19:16

刚学啊
很多疑问
set var=1和set "var=1"这样的代码有什么区别呢?
作者: wc726842270    时间: 2011-2-20 19:20     标题: 回复 4楼 的帖子

在这里是没有区别的。不妨试下
SET VAR=1 1 和SET "VAR=1 1"(个人感觉)。另外不用急,只要有行动,总会明白的
作者: WecanHuang    时间: 2011-2-20 23:22

谢谢
这里很有爱。。。
作者: Batcher    时间: 2011-2-21 12:52     标题: 回复 4楼 的帖子

前者,如果要赋值字符串里面有特殊字符的话可能无法正常赋值。
后者,可以避免上述问题。




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