中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 06:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个for语句错在哪里 查看 874 回复 5
楼 主 这个for语句错在哪里 发表于 2007-01-31 17:03 ·  中国 福建 厦门 电信
初级用户
积分 49
发帖 20
注册 2006-04-22 11:03
20年会员
UID 54248
状态 离线
echo off
setlocal EnableDelayedExpansion
for /f %%i in ('dir /b e:') do (
for /R "e:\%%i" %%j in (*) do set /a n+=%%~zi
set /a k=%n%/1024/1024
echo %%i 大约 %k% M )
pause

请问上面的代码,出错在哪里,是不是FOR不可以重复使用,谢谢


──────────────── 版务记录 ────────────────
执行:namejm
原标题:请教FOR问题~!
修改后标题:这个for语句错在哪里
说明:因标题表述过于模糊,不便于论坛的搜索和管理,在本提示发表三日后,楼主
  仍未修改标题。现由本人强制修改标题,并扣除楼主2点积分。
──────────────── 版务记录 ────────────────


[ Last edited by namejm on 2007-2-6 at 09:16 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
namejm -2 2007-02-06 22:16
QQ批处理群:

群名:CMD批处理
群号:6702314
2 发表于 2007-01-31 20:13 ·  新西兰 奥克兰大区 奥克兰 Microsoft
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
几个括号?
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
3 发表于 2007-01-31 21:17 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
1、没有完整的路径时,取不到大小
2、如果套着用有问题,可以试下用 CALL 调用
4 发表于 2007-01-31 21:28 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线

@echo off
setlocal EnableDelayedExpansion
for /f %%i in ('dir /b e:') do (
call :a "e:\%%i"
)
pause

:a
set /a k=%~z1/1024/1024
echo %~1 大约 %k% M


你好像是要这种?你看看对不对。
5 发表于 2007-02-01 07:43 ·  中国 福建 厦门 电信
初级用户
积分 49
发帖 20
注册 2006-04-22 11:03
20年会员
UID 54248
状态 离线
Originally posted by NaturalJ0 at 2007-1-31 21:28:

@echo off
setlocal EnableDelayedExpansion
for /f %%i in ('dir /b e:') do (
call :a "e:\%%i"
)
pause

:a
set /a k=%~z1/1024/1024
echo %~1 大约 %k% M


你好像 ...



谢谢你的回复,

还达不到我要的结果,

我的目标是,算出E盘下的每个目录的大小,。
QQ批处理群:

群名:CMD批处理
群号:6702314
6 %~z1是取不到目录大小的 发表于 2007-02-01 15:09 ·  中国 浙江 杭州 华数
初级用户
积分 116
发帖 28
注册 2007-01-03 05:21
19年会员
UID 75318
性别 男
状态 离线
你要的是这样的功能吗?


@Echo OFF
SetLocal ENABLEDELAYEDEXPANSION

For /f %%i IN ('dir /s /b /ad e:') DO (
Call :GetSize "%%i"
)

Pause

Goto :EOF
:GetSize
rem %1 目录路径
For /f "tokens=3" %%i IN ('dir %1 ^| find "文件"') DO (
Set size=%%i
Set size=!size:,=!
Set /a size=!size!/1024/1024
Echo %~1 大约 !size!M
)
论坛跳转: