找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 71935|回复: 17

[其他] [已解决]批处理怎样把wmic命令的值保存到变量?

[复制链接]
发表于 2018-12-3 11:37:09 | 显示全部楼层 |阅读模式
如题,
wmic path win32_diskdrive get size>aa
这样输出的文档的时候 在命令提示符里 没问题  
但是在bat里 不知道怎么就不行了。会不停的往AA里写下面这句话
C:\Users\Admin\Desktop>wmic DISKDRIVE get deviceid,Caption,size,InterfaceType

for /f %i in ('wmic path win32_diskdrive get size^| findstr ^^[0-9]') do set a=%i
这个也不行,在bat里打不开


以下语句 可以直接获取到磁盘0的大小
for /f %%a in ('wmic DiskDrive where "DeviceID like '%%PHYSICALDRIVE0'" get Size /value^|find "="') do set "%%a"
echo;磁盘0的大小为:=%Size%
发表于 2018-12-3 12:13:39 | 显示全部楼层
  1. wmic path win32_diskdrive get deviceid,serialnumber,size
复制代码
 楼主| 发表于 2018-12-3 13:58:41 | 显示全部楼层

RE: 批处理中怎么分别获取每个硬盘的容量?

回复 2# flashercs


    怎么把得到的结果保存到变量。。。
发表于 2018-12-7 05:19:07 | 显示全部楼层
  1. for /f "tokens=1,2,3" %%i in ('wmic path win32_diskdrive get deviceid^,serialnumber^,size^|find /i"\\."') do echo %%k
复制代码
%%K 就是变量
 楼主| 发表于 2019-2-18 11:24:14 | 显示全部楼层
回复 4# jiavip


    这个%%K 怎么用啊 ?

怎么能传给 set a 啊
 楼主| 发表于 2019-2-18 12:35:09 | 显示全部楼层
有没有高手 麻烦解答下
发表于 2019-2-18 13:33:22 | 显示全部楼层
for /f %i in ('wmic path win32_diskdrive get size^| findstr ^^[0-9]') do set a=%i
 楼主| 发表于 2019-2-18 13:37:52 | 显示全部楼层
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost
 楼主| 发表于 2019-2-18 19:44:49 | 显示全部楼层
回复 7# lanfogz

不行啊 在命令提示符里可以  在BAT里就打不开啊
发表于 2019-2-18 21:33:11 | 显示全部楼层
回复 9# zhaosiyu2010

    把%i换成%%i,cmd下用%i,bat下用%%i
 楼主| 发表于 2019-2-19 12:20:43 | 显示全部楼层
本帖最后由 zhaosiyu2010 于 2019-2-19 12:28 编辑

回复 10# 1332019995


    谢谢 。。。可以用
wmic path win32_diskdrive get deviceid,serialnumber,size>a.txt   这句在bat里 应该怎么改可以使用呢

for /f %%i in ('wmic path win32_diskdrive get size^| findstr ^^[0-9]') do set a=%%i
然后这句  怎么判断 哪个值是磁盘0的  或者只获取磁盘0的 大小。。。
感谢。。。
发表于 2019-2-20 09:29:07 | 显示全部楼层
本帖最后由 lanfogz 于 2019-2-25 09:40 编辑
  1. @echo off

  2. :: 保存磁盘信息到文件
  3. wmic path win32_diskdrive get deviceid,serialnumber,size>a.txt
  4. type a.txt

  5. :: 保存磁盘0的大小到变量
  6. set disk0_size=
  7. for /f %%i in ('wmic path win32_diskdrive where "deviceid like '%%0'" get size^| findstr ^^[0-9]') do set disk0_size=%%i &goto :break
  8. :break
  9. echo 磁盘0大小:%disk0_size%
复制代码
发表于 2019-2-20 09:50:25 | 显示全部楼层
本帖最后由 lanfogz 于 2019-2-25 09:45 编辑

获取磁盘的数量、所有磁盘的大小
  1. @echo off & setlocal enabledelayedexpansion

  2. set disk_count=0
  3. for /f "tokens=2" %%i in ('wmic path win32_diskdrive get deviceid^,size^| findstr ^^[0-9] ^|sort') do (
  4. set disk!disk_count!_size=%%i
  5. set/a disk_count+=1
  6. )

  7. echo 磁盘数量:%disk_count%
  8. for /l %%i in (0, 1, %disk_count%) do if %%i lss %disk_count% (echo 磁盘%%i大小:!disk%%i_size!)
复制代码
 楼主| 发表于 2019-2-20 17:45:19 | 显示全部楼层
回复 13# lanfogz


    这个不错 。。。。再帮个忙呗   我只要磁盘0的值就行了  
怎么能把值传给 set a  
在for里面 好像不一样
发表于 2019-2-21 09:24:54 | 显示全部楼层
回复 14# zhaosiyu2010


    见12楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 01:18 , Processed in 0.020602 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表