Board logo

标题: 这个for语句错在哪里 [打印本页]

作者: iaide     时间: 2007-1-31 17:03    标题: 这个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 ]
作者: PPdos     时间: 2007-1-31 20:13
几个括号?
作者: NaturalJ0     时间: 2007-1-31 21:17
1、没有完整的路径时,取不到大小
2、如果套着用有问题,可以试下用 CALL 调用
作者: NaturalJ0     时间: 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
你好像是要这种?你看看对不对。
作者: iaide     时间: 2007-2-1 07:43


  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盘下的每个目录的大小,。
作者: SpikeKnox     时间: 2007-2-1 15:09    标题: %~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
)