中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 这个for语句错在哪里 上一主题 | 下一主题
iaide
初级用户





积分 49
发帖 20
注册 2006-4-22
状态 离线
『楼 主』:  这个for语句错在哪里

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 ]

   此帖被 -2 点积分    点击查看详情   
评分人:【 namejm 分数: -2  时间:2007-2-6 22:16




QQ批处理群:

群名:CMD批处理
群号:6702314
2007-1-31 17:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 2 楼』:  

几个括号?



菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-1-31 20:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 3 楼』:  

1、没有完整的路径时,取不到大小
2、如果套着用有问题,可以试下用 CALL 调用

2007-1-31 21:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 4 楼』:  


@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
你好像是要这种?你看看对不对。

2007-1-31 21:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
iaide
初级用户





积分 49
发帖 20
注册 2006-4-22
状态 离线
『第 5 楼』:  



  Quote:
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
2007-2-1 07:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『第 6 楼』:  %~z1是取不到目录大小的

你要的是这样的功能吗?
@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
)


2007-2-1 15:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: