Board logo

标题: 这个问题是怎么回事呢? [打印本页]

作者: wentimao     时间: 2006-10-7 22:21    标题: 这个问题是怎么回事呢?

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 ]
作者: NaturalJ0     时间: 2006-10-7 22:51
开头加上这句
setlocal enabledelayedexpansion

然后 DO 里面的 用%%包起来的变量,换成用!!包起来的变量。
作者: wentimao     时间: 2006-10-7 23:06
恩,问题解决,谢谢
作者: KIKOOOO     时间: 2006-10-8 05:09
上面的脚本是显示当前目录的文件个数吗?好像有点问题啊
作者: pengfei     时间: 2006-10-8 05:27
代码的确有问题:
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