0

バッチ ファイルに次のコードがあります。

    set /p user="Enter username: " %=%
    cd w:\Files
    @echo off 
    setLocal EnableDelayedExpansion 
    set /a value=0 
    set /a sum=0 
    set /a valA=0
    FOR /R %1 %%I IN (*) DO ( 
    set /a value=%%~zI/1024 
    set /a sum=!sum!+!value! 
    set /a sum=!sum!/1024
    ) 
    @echo Size of "FILES" is: !sum! MB
    @echo off
    FOR /R %1 %%I IN (*) DO ( 
    set /a sum=!sum!/1024
    set /a valA=!sum!
    )
    @echo Size of "FILES" is: !sum! GB


    cd W:\Documents and Settings\%user%\Desktop
    @echo off 
    setLocal EnableDelayedExpansion 
    set /a value=0 
    set /a sum=0 
    set /a valB=0
    FOR /R %1 %%I IN (*) DO ( 
    set /a value=%%~zI/1024 
    set /a sum=!sum!+!value! 
    set /a sum=!sum!/1024
    ) 
    @echo Size of Desktop is: !sum! MB
    @echo off
    FOR /R %1 %%I IN (*) DO ( 
    set /a sum=!sum!/1024
    set /a valB=!sum!
    )
    @echo Size of Desktop is: !sum! GB

チェックするフォルダは他にもいくつかありますが、アイデアは得られるはずです。

私はこの出力を得ます:

C:\Users\pprescott\Desktop>cd w:\Files
Size of "FILES" is: 215 MB
Size of "FILES" is: 0 GB
Size of Desktop is: 215 MB
Size of Desktop is: 0 GB
Size of Favorites is: 215 MB
Size of Favorites is: 0 GB
Size of Documents is: 215 MB
Size of Documents is: 0 GB
Total size is: 0 MB
Total size is: 0 GB
Press any key to continue . . .

これは、データ転送の準備をするために、古い XP マシンでフォルダー サイズをカウントするように設計されています。xp マシンはドライブ W にマップされます。

4

3 に答える 3

2

for /rパラメータを削除してみてください%1:

FOR /R %%I IN (*) DO (

このコードを試してください:

@ECHO OFF &SETLOCAL
FOR /R "w:\Files" %%I IN (*) DO set /a asum+=%%~zI
SET /a sum=asum/1048576
echo Size of "FILES" is: %sum% MB
set /a sum=asum/1073741824
echo Size of "FILES" is: %sum% GB
FOR /R "W:\Documents and Settings\%user%\Desktop" %%I IN (*) DO set /a asum+=%%~zI
SET /a sum=asum/1048576
echo Size of "DESKTOP" is: %sum% MB
set /a sum=asum/1073741824
echo Size of "DESKTOP" is: %sum% GB
于 2013-07-17T15:31:33.553 に答える
1

これにより、最大 999 GB のツリーのサイズがバイト単位で報告されます。

下の回答では、VBS スクリプトを使用して数値を GB に変換します (小数を削除)。

@echo off
call :size "w:\Files"
call :size "W:\Documents and Settings\%user%\Desktop" 
pause
goto :eof
:size
for /f "tokens=3" %%b in ('dir /s "%~1" 2^>nul ^|find " File(s) "') do set "n=%%b"
for /f "tokens=1-4 delims=," %%c in ("%n%") do (
echo %%c%%d%%e%%f "%~1"
)
)

おおよそのGB数値を返すソリューション

@echo off
call :size "w:\Files"
call :size "W:\Documents and Settings\%user%\Desktop" 
pause
goto :eof
:size
for /f "tokens=3" %%b in ('dir /s "%~1" 2^>nul ^|find " File(s) "') do set "n=%%b"
for /f "tokens=1-4 delims=," %%c in ("%n%") do (

>"%temp%\VBS.vbs" echo Set fso = CreateObject^("Scripting.FileSystemObject"^) : Wscript.echo ^(%%c%%d%%e%%f/1024/1024^)
for /f "tokens=1 delims=." %%z in ('cscript /nologo "%temp%\VBS.vbs"') do echo %%z GB "%~1"
del "%temp%\VBS.vbs"

)
)
于 2013-07-18T09:32:34.250 に答える
1

dirコマンド出力を使用します。この例を参照してください

これにより、フォルダーのサイズが取得され、さまざまな値に変換されます。変換は、2 ギガバイトまでの数値に対してのみ機能することに注意してください。

@echo off
for /f "tokens=3" %%A IN ('dir /s /-c ^| find /i "bytes" ^| find /v /i "free"') do set T=%%A

echo Bytes = %T%
set /a T/=1024
echo Kilobytes = %T%
set /a T/=1024
echo Megabytes = %T%
set /a T/=1024
echo Gigabytes = %T%

出力:

C:\Users\User\Desktop>Test.bat
Bytes = 18280552
Kilobytes = 17852
Megabytes = 17
Gigabytes = 0
于 2013-07-17T17:16:16.577 に答える