标题: [系统相关] 怎样通过批处理获取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
- 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- @echo off&setlocal EnableDelayedExpansion
- >%temp%\tmp.vbs echo Wscript.Echo round(wscript.arguments(0)/wscript.arguments(1),2)
- for /f "tokens=1,2,3 delims= " %%a in ('wmic logicaldisk where "drivetype=3" get deviceid^,size^,freespace^|find ":"') do (
- call :calculate %%c 1073741824 allGB
- echo.%%a空间:!allGB!GB
- set /a all+=allgb
- )
- echo.&echo 硬盘总空间约为:%all%GB
- echo.&echo 硬盘总空间约为:%all%GB>1.txt
- del %temp%\tmp.vbs&pause>nul&exit
- :calculate
- for /f "delims=" %%i in ('cscript //nologo %temp%\tmp.vbs %1 %2') do (set %3=%%i)
- goto :eof
复制代码
作者: DAIC 时间: 2013-9-17 22:40
- 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
不要计算的话:- 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)- @echo off
- for /f %%a in ('wmic diskdrive get size^|find /v "S"') do set "size=%%a"
- mshta vbscript:createobject("scripting.filesystemobject").opentextfile("size.txt",2,1).write(round(%size%/1024/1024/1024,2)^&" GB")(self.close)
- start size.txt
复制代码
作者: terse 时间: 2013-9-18 01:58
加个多个硬盘- @echo off
- for /f "tokens=1-2,4-5" %%i in ('echo list disk ^| diskpart ^| findstr /i GB') do (
- echo %%i %%j %%k %%l
- )
- 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显示:- @echo off
- chcp 437>nul
- for /f "tokens=4,5" %%a in ('echo,list disk^|diskpart^|findstr "Online"') do echo,%%a%%b>a.txt
- 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 |