中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 03:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个问题是怎么回事呢? 查看 895 回复 4
楼 主 这个问题是怎么回事呢? 发表于 2006-10-07 22:21 ·  中国 辽宁 大连 电信
初级用户
积分 110
发帖 27
注册 2006-06-03 17:25
20年会员
UID 56491
状态 离线
set num=0
echo %num%
for %%p in ('dir /b *') do (
set /a num+=1
echo %num%
)
echo %num%

现在的问题是,do里的echo显示的是0,而外面的echo可以正确显示累加的结果



──────────────── 版务记录 ────────────────
执行:namejm
原标题:这个问题是怎么回事呢
说明:因标题过于模糊,不便于论坛的搜索和管理,请在三日内修改标题。
提示:修改标题请在当前帖的右下脚点
编辑修改完毕之后按 编辑帖子 即可。
处罚:因属论坛新人,暂时不予处罚;若三日之后尚未修改标题,将扣除4点积分,
以示惩罚,并由版主强制修改标题。请点击
这里阅读论坛发帖规定,以避免在
今后的讨论中违规发帖。
──────────────── 版务记录 ────────────────


[ Last edited by namejm on 2006-10-8 at 00:15 ]
xp,cmd
2 发表于 2006-10-07 22:51 ·  中国 江苏 苏州 吴中区 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
开头加上这句
setlocal enabledelayedexpansion

然后 DO 里面的 用%%包起来的变量,换成用!!包起来的变量。
3 发表于 2006-10-07 23:06 ·  中国 辽宁 大连 电信
初级用户
积分 110
发帖 27
注册 2006-06-03 17:25
20年会员
UID 56491
状态 离线
恩,问题解决,谢谢
xp,cmd
4 发表于 2006-10-08 05:09 ·  中国 浙江 杭州 电信
初级用户
积分 34
发帖 12
注册 2006-09-25 04:45
19年会员
UID 63588
性别 男
状态 离线
上面的脚本是显示当前目录的文件个数吗?好像有点问题啊
5 发表于 2006-10-08 05:27 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
20年会员
UID 58987
来自 湖南.娄底
状态 离线
代码的确有问题:
1. 在for语句中使用命令结果的输出作为循环变量, 这里必须使用/f参数.
2. 这段代码为查找文件及文件夹. 如果查找文件请用"dir /a-d", 若搜索文件夹请用"dir /ad"


这段为统计当前文件夹下的文件个数. 不用开启延的环境变量扩充.

@echo off
set num=0
for /f %%p in ('dir /a-d /b *') do (
set /a num+=1
)
echo %num%
pause
论坛跳转: