中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 02:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 变量延迟失效??? 查看 748 回复 6
楼 主 变量延迟失效??? 发表于 2007-06-12 09:59 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
下列代码有什么不对之处???
请高手们帮忙找一找,在这先谢了!!!

@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
2 发表于 2007-06-12 11:11 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
"DELIMS=,"文件名里有逗号?

SET /a VAR="%%T",文件名里有数字?
3 发表于 2007-06-12 11:13 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
是这个意思吗?
@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
4 发表于 2007-06-12 11:27 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
使用 "DELIMS=," 是因为文件名中会出现空格,如果把“,”号去掉会出现文件名不完整的情况!

"DELIMS" 的默认是以空格为分隔符处理的。
5 发表于 2007-06-12 11:29 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
Originally posted by wudixin96 at 2007-6-12 11:13 AM:
是这个意思吗?
@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: ...


三楼的代码会出现文件名称不完整的情况!
6 发表于 2007-06-12 12:30 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
19年会员
UID 75048
性别 男
状态 离线
三楼的"DELIMS="后面是直接跟着引号的,这样就表示取消包括空格在内的所有字符作为分隔符
正在潜水修练的批处理小白
7 发表于 2007-06-12 18:07 ·  中国 安徽 芜湖 电信
高级用户
★★
积分 537
发帖 219
注册 2006-10-31 21:08
19年会员
UID 69036
性别 男
来自 芜湖
状态 离线
你所指的不对之处,是哪里出了问题.
希望可以说的详细一点

但 set /a 是用来做数学运算的阿,用来做替换变量内的值 似乎有些不妥
江湖远
碧空长
路茫茫

一个人漫无目的的奔跑,风,刺骨的冷....
论坛跳转: