0

.bat ファイルを実行して、ドライブの合計容量と使用可能な容量を取得するにはどうすればよいですか。PowerShell スクリプトでは可能です。しかし、私はパワーシェルを使うべきではありません。基本的なスクリプト プログラミングでは、それを取得する必要があります。以下のコードを試してみましたが、適切な結果が得られません

fsutil volume diskfree C:\>temp.txt
FOR /F "Tokens=* skip=1 delims= " %%A IN (temp.txt) DO echo %%A>>temp2.txt
SORT /+32 temp2.txt /O temp3.txt
FOR /F "tokens=5 Delims=: " %%A IN (temp3.txt) DO ECHO %%A>temp4.txt
FOR /f "tokens=1 Delims= " %%A IN (temp4.txt) DO SET a=%%A
set /a b=%a:~0,-10%
set /a c=b*1024
PAUSE
DEL temp.txt
DEL temp1.txt
DEL temp2.txt
DEL temp3.txt
DEL temp4.txt
CLS
ECHO %b% GB (%c% MB)
PAUSE
4

2 に答える 2

3

Foxidriveの答えから外れて、すべてのディスクドライブを列挙し、スクリプトで指定した方法でそれぞれのサイズを出力しました

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1" %%d in (
 'wmic logicaldisk where drivetype^=3 get deviceid ^| find ":"') do ( 
    for /f "skip=1 tokens=1,* delims=:" %%a in ('fsutil volume diskfree %%d') do (
        Call :ConvertBytes %%b GB Gigs
        Call :ConvertBytes %%b MB Megs
        echo %%d - %%a: !Gigs! GB (^!Megs! MB^) >> output.txt
    )
)       
goto :eof


:ConvertBytes bytes unit ret
setlocal
if "%~2" EQU "KB" set val=/1024
if "%~2" EQU "MB" set val=/1024/1024
if "%~2" EQU "GB" set val=/1024/1024/1024
> %temp%\tmp.vbs echo wsh.echo FormatNumber(eval(%~1%val%),0)
for /f "delims=" %%a in ( 
  'cscript //nologo %temp%\tmp.vbs' 
) do endlocal & set %~3=%%a
del %temp%\tmp.vbs
于 2013-05-22T15:52:17.003 に答える
1

これは、ツールを使用してここで機能します。私は誤解しているかもしれません-GBなどを計算したいとは言っていません.

@echo off
for /f "skip=1 tokens=1,* delims=:" %%a in ('fsutil volume diskfree c:') do echo %%a - %%b
pause
于 2013-05-22T12:59:28.053 に答える