Board logo

标题: 变量延迟失效??? [打印本页]

作者: ruisoft     时间: 2007-6-12 09:59    标题: 变量延迟失效???

下列代码有什么不对之处???
请高手们帮忙找一找,在这先谢了!!!

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

DIR D:\DOCUMENTS /A /B > DOC.TXT

FOR /F " DELIMS=," %%T IN (DOC.TXT) DO (
  SET /a VAR="%%T"
  SET /a VAR=!VAR: =_!
  SET /a VAR=!VAR:-=_!

  echo "!VAR!"

)

GOTO END-S

:END-S
作者: wudixin96     时间: 2007-6-12 11:11
"DELIMS=,"文件名里有逗号?

SET /a VAR="%%T",文件名里有数字?
作者: wudixin96     时间: 2007-6-12 11:13
是这个意思吗?
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

DIR D:\DOCUMENTS /A /B > DOC.TXT

FOR /F "DELIMS=" %%T IN (DOC.TXT) DO (
  SET  VAR=%%T
  SET  VAR=!VAR: =_!
  SET  VAR=!VAR:-=_!

  echo !VAR!

)
pause
GOTO END-S

:END-S

作者: ruisoft     时间: 2007-6-12 11:27
使用 "DELIMS=," 是因为文件名中会出现空格,如果把“,”号去掉会出现文件名不完整的情况!

"DELIMS" 的默认是以空格为分隔符处理的。
作者: ruisoft     时间: 2007-6-12 11:29


  Quote:
Originally posted by wudixin96 at 2007-6-12 11:13 AM:
是这个意思吗?
[code]@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

DIR D:\DOCUMENTS /A /B > DOC.TXT

FOR /F "DELIMS=" %%T IN (DOC.TXT) DO (
  SET  VAR=%%T
  SET  VAR=!VAR:  ...

三楼的代码会出现文件名称不完整的情况!
作者: dikex     时间: 2007-6-12 12:30
三楼的"DELIMS="后面是直接跟着引号的,这样就表示取消包括空格在内的所有字符作为分隔符
作者: huzixuan     时间: 2007-6-12 18:07
你所指的不对之处,是哪里出了问题.
希望可以说的详细一点

但 set /a 是用来做数学运算的阿,用来做替换变量内的值 似乎有些不妥