[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理怎样把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%

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

TOP

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

回复 2# flashercs


    怎么把得到的结果保存到变量。。。

TOP

  1. for /f "tokens=1,2,3" %%i in ('wmic path win32_diskdrive get deviceid^,serialnumber^,size^|find /i"\\.\"') do echo %%k
复制代码
%%K 就是变量

TOP

回复 4# jiavip


    这个%%K 怎么用啊 ?

怎么能传给 set a 啊

TOP

有没有高手 麻烦解答下

TOP

for /f %i in ('wmic path win32_diskdrive get size^| findstr ^^[0-9]') do set a=%i

TOP

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost

TOP

回复 7# lanfogz

不行啊 在命令提示符里可以  在BAT里就打不开啊

TOP

回复 9# zhaosiyu2010

    把%i换成%%i,cmd下用%i,bat下用%%i

TOP

本帖最后由 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的 大小。。。
感谢。。。

TOP

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

TOP

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

TOP

回复 13# lanfogz


    这个不错 。。。。再帮个忙呗   我只要磁盘0的值就行了  
怎么能把值传给 set a  
在for里面 好像不一样

TOP

回复 14# zhaosiyu2010


    见12楼

TOP

返回列表