Board logo

标题: [其他] [已解决]批处理怎样把wmic命令的值保存到变量? [打印本页]

作者: zhaosiyu2010    时间: 2018-12-3 11:37     标题: [已解决]批处理怎样把wmic命令的值保存到变量?

如题,
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%
作者: flashercs    时间: 2018-12-3 12:13

  1. wmic path win32_diskdrive get deviceid,serialnumber,size
复制代码

作者: zhaosiyu2010    时间: 2018-12-3 13:58     标题: RE: 批处理中怎么分别获取每个硬盘的容量?

回复 2# flashercs


    怎么把得到的结果保存到变量。。。
作者: jiavip    时间: 2018-12-7 05:19

  1. for /f "tokens=1,2,3" %%i in ('wmic path win32_diskdrive get deviceid^,serialnumber^,size^|find /i"\\.\"') do echo %%k
复制代码
%%K 就是变量
作者: zhaosiyu2010    时间: 2019-2-18 11:24

回复 4# jiavip


    这个%%K 怎么用啊 ?

怎么能传给 set a 啊
作者: zhaosiyu2010    时间: 2019-2-18 12:35

有没有高手 麻烦解答下
作者: lanfogz    时间: 2019-2-18 13:33

for /f %i in ('wmic path win32_diskdrive get size^| findstr ^^[0-9]') do set a=%i
作者: zhaosiyu2010    时间: 2019-2-18 13:37

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost
作者: zhaosiyu2010    时间: 2019-2-18 19:44

回复 7# lanfogz

不行啊 在命令提示符里可以  在BAT里就打不开啊
作者: 1332019995    时间: 2019-2-18 21:33

回复 9# zhaosiyu2010

    把%i换成%%i,cmd下用%i,bat下用%%i
作者: zhaosiyu2010    时间: 2019-2-19 12:20

本帖最后由 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的 大小。。。
感谢。。。
作者: lanfogz    时间: 2019-2-20 09:29

本帖最后由 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%
复制代码

作者: lanfogz    时间: 2019-2-20 09:50

本帖最后由 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!)
复制代码

作者: zhaosiyu2010    时间: 2019-2-20 17:45

回复 13# lanfogz


    这个不错 。。。。再帮个忙呗   我只要磁盘0的值就行了  
怎么能把值传给 set a  
在for里面 好像不一样
作者: lanfogz    时间: 2019-2-21 09:24

回复 14# zhaosiyu2010


    见12楼
作者: zhaosiyu2010    时间: 2019-2-21 15:41

回复 15# lanfogz


    感谢 感谢。。。
作者: zhaosiyu2010    时间: 2019-2-23 13:32

回复 15# lanfogz


兄die,帮忙看下,变量得到在并不是disk0的……怎么办
作者: lanfogz    时间: 2019-2-25 09:36

本帖最后由 lanfogz 于 2019-2-25 09:45 编辑

代码已调整,见#12 #13




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