Batch file .bat文件中的驱动器(C:/D:/E:/)详细信息
如何通过运行.bat文件获得驱动器的总空间和可用空间。在powershell脚本中,这是可能的。但我不应该使用电源外壳。在基本脚本编程中,我需要得到它。我试过下面的代码,但没有给出正确的结果Batch file .bat文件中的驱动器(C:/D:/E:/)详细信息,batch-file,Batch File,如何通过运行.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 F
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
这在这里使用您的工具工作。我可能误解了-你没有说你想计算GB等
@echo off
for /f "skip=1 tokens=1,* delims=:" %%a in ('fsutil volume diskfree c:') do echo %%a - %%b
pause
这在这里使用您的工具工作。我可能误解了-你没有说你想计算GB等
@echo off
for /f "skip=1 tokens=1,* delims=:" %%a in ('fsutil volume diskfree c:') do echo %%a - %%b
pause
根据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
根据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
准确返回值..非常感谢..如何在文本文件中写入此输出值?+1,我喜欢使用WMIC,这是一个很好的大数算术解决方案。如果从VBS切换到JScript,则无需临时文件即可轻松完成。看见也可以使用VBS。看见但我认为JScript是一个更好的选择。准确地返回值。非常感谢…如何在文本文件中写入此输出值?+1,我喜欢使用WMIC,这是一个很好的大数算术解决方案。如果从VBS切换到JScript,则无需临时文件即可轻松完成。看见也可以使用VBS。看见但我认为JScript是一个更好的选择。