Board logo

标题: [系统相关] 怎样通过批处理获取Windows整个硬盘大小? [打印本页]

作者: adrien0901    时间: 2013-9-17 21:43     标题: 怎样通过批处理获取Windows整个硬盘大小?

本帖最后由 adrien0901 于 2013-9-17 22:22 编辑

请问如何通过批处理获取Windows整个硬盘大小,并把结果重定向到一个记事本里,谢谢.
作者: foxJL    时间: 2013-9-17 21:48

看看这个帖子,里面的脚本可以获取磁盘大小
http://www.bathome.net/thread-26442-1-1.html
作者: DAIC    时间: 2013-9-17 21:52

  1. wmic LogicalDisk where "DeviceID='C:'" get Size
复制代码

作者: adrien0901    时间: 2013-9-17 21:53

本帖最后由 adrien0901 于 2013-9-17 21:56 编辑
看看这个帖子,里面的脚本可以获取磁盘大小
foxJL 发表于 2013-9-17 21:48



这个不能获取整个系统磁盘的大小,希望通过执行批处理之后,文本里直接显示为磁盘的总大小,并且单位为G
作者: foxJL    时间: 2013-9-17 21:56

回复 4# adrien0901


    整个系统磁盘大小?是不是你表错了意思,你是说整个硬盘大小?
作者: adrien0901    时间: 2013-9-17 21:57

回复  adrien0901


    整个系统磁盘大小?是不是你表错了意思,你是说整个硬盘大小?
foxJL 发表于 2013-9-17 21:56



    不好意思,可能是表达错了,指的是整个硬盘大小。
作者: foxJL    时间: 2013-9-17 22:24

回复 6# adrien0901


    临时给你改一个吧,只有整数位,没有小数,重定向到1.txt
  1. @echo off&setlocal EnableDelayedExpansion
  2. >%temp%\tmp.vbs echo Wscript.Echo round(wscript.arguments(0)/wscript.arguments(1),2)
  3. for /f "tokens=1,2,3 delims= " %%a in ('wmic logicaldisk where "drivetype=3" get deviceid^,size^,freespace^|find ":"') do (
  4. call :calculate %%c 1073741824 allGB
  5. echo.%%a空间:!allGB!GB
  6. set /a all+=allgb
  7. )
  8. echo.&echo 硬盘总空间约为:%all%GB
  9. echo.&echo 硬盘总空间约为:%all%GB>1.txt
  10. del %temp%\tmp.vbs&pause>nul&exit
  11. :calculate
  12. for /f "delims=" %%i in ('cscript //nologo %temp%\tmp.vbs %1 %2') do (set %3=%%i)
  13. goto :eof
复制代码

作者: DAIC    时间: 2013-9-17 22:40

  1. wmic DiskDrive get Size /value
复制代码

作者: Lumiere    时间: 2013-9-17 22:43

本帖最后由 Lumiere 于 2013-9-17 22:48 编辑

回复 1# adrien0901

系统盘还是整个磁盘?
作者: batman    时间: 2013-9-17 22:43

不要计算的话:
  1. wmic diskdrive get size|find /v "S">size.txt
复制代码

作者: cutebe    时间: 2013-9-17 22:59

ECHO,LIST DISK>LST.TXT
DISKPART /S LST.TXT
作者: batman    时间: 2013-9-17 23:05

还是加上计算过程吧(换算为GB)
  1. @echo off
  2. for /f %%a in ('wmic diskdrive get size^|find /v "S"') do set "size=%%a"
  3. mshta vbscript:createobject("scripting.filesystemobject").opentextfile("size.txt",2,1).write(round(%size%/1024/1024/1024,2)^&" GB")(self.close)
  4. start size.txt
复制代码

作者: terse    时间: 2013-9-18 01:58

加个多个硬盘
  1. @echo off
  2. for /f "tokens=1-2,4-5" %%i in ('echo list disk ^| diskpart ^| findstr /i GB') do (
  3. echo %%i %%j %%k %%l
  4. )
  5. pause
复制代码

作者: adrien0901    时间: 2013-9-18 09:18

还是加上计算过程吧(换算为GB)
batman 发表于 2013-9-17 23:05

谢谢,但windows 8上无法运行。
作者: adrien0901    时间: 2013-9-18 09:19

谢谢各位热心的帮助
作者: adrien0901    时间: 2013-9-18 09:22

回复  adrien0901

系统盘还是整个磁盘?
Lumiere 发表于 2013-9-17 22:43



   整个硬盘的大小,最好是以为GB显示。
作者: adrien0901    时间: 2013-9-18 09:24

回复  adrien0901


    临时给你改一个吧,只有整数位,没有小数,重定向到1.txt
foxJL 发表于 2013-9-17 22:24



    谢谢版主,这个脚本很好。可以满足要求,谢谢。
作者: batman    时间: 2013-9-18 10:15

回复 17# adrien0901


    其余的都不行,还是你没测试?
作者: weichenxiehou    时间: 2013-9-18 10:55

应该用diskpart是最简单的,因为本来就是GB显示:
  1. @echo off
  2. chcp 437>nul
  3. for /f "tokens=4,5" %%a in ('echo,list disk^|diskpart^|findstr "Online"') do echo,%%a%%b>a.txt
  4. start a.txt
复制代码

作者: Lumiere    时间: 2013-9-19 00:13

回复 13# terse


    试了一下echo list disk | diskpart这个代码,效果显示磁盘的容量,但是看不懂,前面的echo list disk是什么命令,单独运行的话就是显示list disk。还有diskpart可以通过管道接受命令结果?
作者: terse    时间: 2013-9-19 12:44

回复 20# Lumiere
管道接受的不是结果 算是子命令吧
这里其实是省去个临时文件
当然 保存为文件也一样 加个 /s FILENAME
作者: Lumiere    时间: 2013-9-19 18:00

回复 21# terse


    那echo list disk | diskpart这条命令是什么意思呢?能不能详细解说一下?
作者: terse    时间: 2013-9-19 19:16

回复 22# Lumiere
这跳命令 相当于:
建立内容为”  list disk  “ 的文件 这个文件也就是 diskpart 脚本
运行 diskpart  /s  脚本名
详细 diskpart  /?
作者: Lumiere    时间: 2013-9-20 00:19

回复 23# terse

那list disk在diskpart而言就是一个脚本语言了对吧?我试了用echo显示其他内容就没有这个效果。
作者: cc5511    时间: 2020-8-29 03:18

应该用diskpart是最简单的,因为本来就是GB显示:
weichenxiehou 发表于 2013-9-18 10:55



    想知道你前面这个chcp 437>nul 是什么意思 可否解答下




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2