Board logo

标题: [数值计算] 谁有完美的显示u盘的剩余容量和总容量批处理啊? [打印本页]

作者: shuaige100    时间: 2010-6-24 23:04     标题: 谁有完美的显示u盘的剩余容量和总容量批处理啊?

  1. @echo off
  2. for /f "skip=1 tokens=1-3" %%i in ('"wmic logicaldisk where name='i:' get name,freespace,size"') do (set m1=%%i &set m3=%%k & set m2=%%j & goto label)
  3. :label
  4. set /a m1=%m1: =%/1024/1024,m3=%m3: =%/1024/1024
  5. (echo 盘符:%m2%&echo 总容量:%m3%MB&echo 剩余容量:%m1%MB)|msg %username% /time:5
复制代码
以上批处理broly 说超过2g的内存卡不会已mb为单位显示了,如果也能显示以g为单位的就和我的电脑查看一模一样咯。那样就太完美了

[ 本帖最后由 shuaige100 于 2010-7-6 22:48 编辑 ]
作者: sgaizxt001    时间: 2010-6-25 00:44

把echo off改为echo on看他的输出信息。

比如输入的是C盘
for /f "delims=" %%i in ('chkntfs %pf%:') do (set /a m+=1 & set m!m!=%%i)
这里是从chkntfs c:的输出信息里来进行判断,如果磁盘检查没问题的话一般就输出两行。他设置m1=第一行,m2=第二行。这里你可以先chkntfs /?看一下这个命令的帮助
然后最后一句是
(echo %pf%盘%m1:~4% & echo %m2%) | msg %username% /time:5
echo你应该懂,msg是发送消息命令,不过需要服务支持。具体可以查看msg /?
作者: shuaige100    时间: 2010-6-25 15:59     标题: 回复 2楼 的帖子

你等于没解释,我就觉得他为什么要set /a m+=1 & set m!m!=%%i;echo %pf%盘%m1:~4%,这里我新手看的懂吗?
作者: 随风    时间: 2010-6-25 16:23

原帖由 shuaige100 于 2010-6-25 15:59 发表
你等于没解释,我就觉得他为什么要set /a m+=1 & set m!m!=%%i;echo %pf%盘%m1:~4%,这里我新手看的懂吗?

看不懂还不谦虚,你要搞清楚这里没有人是必须回答你的问题的,回帖是热心是人情。要想获得别人的帮助,先学学怎么提问怎么说话怎么尊重别人吧,这些小学老师就应该教过呀?
作者: broly    时间: 2010-6-25 17:27

找了点空闲是时间,给你解释一下。。。

for /f "delims=" %%i in (') do (set /a m+=1 & set m!m!=%%i)
这句是把chkntfs这个命令的两句话赋值给m1和m2两个变量

echo %pf%盘%m1:~4%
这句是把变量M1的除了前面四个字以外的字显示出来。。。
作者: sgaizxt001    时间: 2010-6-25 18:40

楼主,你看我的2楼的回复。我说的还不够清楚吗?
如果磁盘检查没问题的话一般就输出两行。他设置m1=第一行,m2=第二行。

如果你不知道某个命令的输出时什么,那么就自己试验一下,看看他的输出效果。
作者: shuaige100    时间: 2010-6-25 19:10     标题: 回复 5楼 的帖子

为什么我用在这个会显示不出任何命令的两句话?
wmic logicaldisk where "name='d:'" get name,freespace,size
作者: Batcher    时间: 2010-6-26 02:00     标题: 回复 7楼 的帖子

“显示不出任何命令的两句话”是什么意思?
作者: pdanniel66    时间: 2010-6-26 09:34

C:\>wmic logicaldisk where "name='d:'" get name,freespace,size
FreeSpace   Name  Size
4613623808  D:    95495499776
作者: shuaige100    时间: 2010-6-26 12:07     标题: 回复 8楼 的帖子

我加用msg这个命令显示不出东西
作者: broly    时间: 2010-6-29 14:59

::根据你的要求,我写下一个可以满足你的P
::由于批处理本身计算能力有限,如果你的储存设备超过2G,则显示不出以MB为单位的容量
::或者你自己想办法解决

  1. @echo off
  2. for /f "skip=1 tokens=1-3" %%i in ('"wmic logicaldisk where name='i:' get name,freespace,size"') do (set m1=%%i &set m3=%%k & set m2=%%j & goto label)
  3. :label
  4. set /a m1=%m1: =%/1024/1024,m3=%m3: =%/1024/1024
  5. (echo 盘符:%m2%&echo 总容量:%m3%MB&echo 剩余容量:%m1%MB)|msg %username% /time:5
复制代码

作者: shuaige100    时间: 2010-6-29 18:11     标题: 回复 11楼 的帖子

— —,我用的是8g内存卡

[ 本帖最后由 shuaige100 于 2010-6-29 23:36 编辑 ]
作者: broly    时间: 2010-6-29 19:50

批处理计算能力有限,不能计算超过2G的数。如果你想实现计算的话,你发张贴,应该有人可以解决的
作者: x9tiancmd    时间: 2010-7-1 19:59

用defrag  磁盘整理碎片的查看功能,看不好吗?

  defrag -a 盘符|find "**"
作者: shuaige100    时间: 2010-7-6 23:20     标题: 回复 14楼 的帖子

哎,所有的方法都感觉很浪费资源,真没办法
作者: junwalo    时间: 2010-7-7 10:51

学习中,谢谢各位。。。。。
作者: broly    时间: 2010-7-8 16:01

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "skip=11 delims=" %%i in ('defrag -a i:') do (set /a m+=1 & set "m!m!=%%i")
  3. (echo %m1: =%
  4. echo %m2: =%
  5. echo %m4: =%)|msg %username% /time:5
复制代码





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