无忧启动论坛

标题: 【已解决】批处理怎样查看C盘已用空间?谢谢 [打印本页]

作者: yyz2191958    时间: 2023-8-17 11:10
标题: 【已解决】批处理怎样查看C盘已用空间?谢谢
本帖最后由 yyz2191958 于 2023-8-21 19:35 编辑

完美解决了:
@echo off
::【查C:盘空间】
cd /d D:\1绿色软件\关闭显示器\
:A
for /f "tokens=1,2,3,4 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| calc c=(%%a%%) / 1g # 1^| calc d=(%%a%% - %%b%%) / 1g # 2^| calc e=(%%b%%) / 1g # 1^| calc f=(%%a%% - %%b%%) / %%a%% * 100 # 0^| writ -,$+0,%%c%% %%d%% %%e%% %%f%%"') do ( set "总空间=%%a" && set "已用空间=%%b" && set "剩余空间=%%c" && set "使用率=%%d" )
::【(# 0——使用率保留0位小数)(# 1——总空间和剩余空间保留1位小数)(# 2——已用空间保留2位小数)】
@echo.
@echo.
@echo.
@echo.
@echo.   
@echo                               C盘 %已用空间%   参考 5.85
@echo.
@echo.
@echo.
@echo.
echo        分区            总的            剩余            已用           用率
echo.
echo        C 盘            %总空间%            %剩余空间%            %已用空间%           %使用率% %%
echo.       -------------------------------------------------------------------
pause>nul 2>nul
::【删除“ie临时文件”】
Del /f /s /q  "C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files\*.*"
Del /f /s /q  "D:\桌面\Temporary Internet Files\*.*"
::【启动:DiskCleaner2.0.exe】
"%~dp0Disk Cleaner 2.0.exe"
cls
goto :A
exit

******************************************************************************************
方法2:查看C盘已用空间.wcs
find C:\=?,a    //查C:盘总空间
ifex C:\=?,b    //查C:盘剩余空间
calc c=(%a% - %b%) / 1g # 2  //以G为单位,保留两位小数
mess. C盘已用空间:%c% GB

********************************
原来的问题:
批处理怎样查看C盘已用空间?



作者: holley2008    时间: 2023-8-17 12:10
wmic LogicalDisk where "Caption='C:'" get FreeSpace/value
作者: szwp    时间: 2023-8-17 12:26
dir  c:
作者: yyz2191958    时间: 2023-8-17 12:43
szwp 发表于 2023-8-17 12:26
dir  c:

不行哦
作者: szwp    时间: 2023-8-17 13:06
yyz2191958 发表于 2023-8-17 12:43
不行哦

截屏会么
作者: x光人    时间: 2023-8-17 13:13
我试了下,最后一行是显示多少可用字节,就是剩余空间啊。
作者: kio    时间: 2023-8-17 14:03
dir c:\ |findstr 可用
作者: 窄口牛    时间: 2023-8-17 15:20
本帖最后由 窄口牛 于 2023-8-17 15:40 编辑
holley2008 发表于 2023-8-17 12:10
wmic LogicalDisk where "Caption='C:'" get FreeSpace/value


如何格式化这个值变为多少G多少M多少K?做个计算就echo不出来了。
作者: china.gaofeng    时间: 2023-8-17 15:44
powershell (Get-CimInstance Win32_LogicalDisk).where({$_.deviceid -match 'c:'}).freespace/1gb
作者: liangzr1976    时间: 2023-8-17 16:05
本帖最后由 liangzr1976 于 2023-8-17 16:53 编辑

唉!问题问得简单,实际要求根本不是 普通命令,而是 命令行如何做 文本识别及提取计算。
这样变成一个大的问题了。

看人家 grub 都是用集成 模块 RUN 等工具

普通的情况是:
命令:
C:\>dir c:\ |findstr 可用字节

结果:
               9 个目录 45,337,948,160 可用字节

建议自己用兼容 winnt的命令行 basice 或 C 编程来 套取完成。用C语言编程的文本识别 或 正则表达式 计算
也可以参考这类文章:
https://it.cha138.com/mysql/show-2386630.html
BAT/CMD中将命令执行结果赋值给变量


https://cloud.tencent.com/developer/article/1729656wmic命令解析与实例



作者: szwp    时间: 2023-8-17 17:00
结果:      9 个目录
作者: nttwqz    时间: 2023-8-17 18:23
8.1系统自带一个命令行工具,10和7好像没有,支持友好的单位显示已用空间和分区大小

dfp /drives /b

作者: 青青草    时间: 2023-8-17 18:46
C盘乘空间?什么意思???
作者: 9zhmke    时间: 2023-8-17 19:35
本帖最后由 9zhmke 于 2023-8-17 19:54 编辑


是这个意思吗?
  1. @echo off
  2. for /f "tokens=3 delims= " %%i in ('dir c:') do set free=%%i
  3. set i=%free:,=%
  4. set free=%i:~0,-6%
  5. echo C盘的空间还有:%free%兆
复制代码
里面确实有个陷阱,使用set /a 来计算时会出因为数值太大而出错



作者: yyz2191958    时间: 2023-8-17 19:47
PE下没有解决问题
作者: szwp    时间: 2023-8-17 19:51
青青草 发表于 2023-8-17 18:46
C盘乘空间?什么意思???

大数乘除麻烦些
作者: china.gaofeng    时间: 2023-8-17 20:02
yyz2191958 发表于 2023-8-17 19:47
PE下没有解决问题

看9#
作者: 527104427    时间: 2023-8-17 20:44
yyz2191958 发表于 2023-8-17 19:47
PE下没有解决问题

来个PECMD代码:

ifex C:\=?,a    //查C:盘可用空间
calc b=%a% / 1g # 2  //以G为单位,保留两位小数
mess. [C盘可用空间:%b%GB]


作者: liangzr1976    时间: 2023-8-17 23:43
yyz2191958 发表于 2023-8-17 19:47
PE下没有解决问题

你好,
14楼的代码,我在wePE2.3_64.ISO 运行在vortualBOX 7.0.10 环境中,能正常完成并显示
作者: liangzr1976    时间: 2023-8-17 23:46


作者: seeimpact153    时间: 2023-8-18 00:33
谢楼主分享
作者: yyz2191958    时间: 2023-8-18 07:03
527104427 发表于 2023-8-17 20:44
来个PECMD代码:

ifex C:\=?,a    //查C:盘可用空间

我需要查看剩余空间,谢谢
作者: yyz2191958    时间: 2023-8-18 07:11
liangzr1976 发表于 2023-8-17 23:43
你好,
14楼的代码,我在wePE2.3_64.ISO 运行在vortualBOX 7.0.10 环境中,能正常完成并显示

我这里没有显示  谢谢
作者: liangzr1976    时间: 2023-8-18 07:16
本帖最后由 liangzr1976 于 2023-8-18 07:18 编辑
yyz2191958 发表于 2023-8-18 07:11
我这里没有显示  谢谢

我的意思是:
你试过将 @echo off 改为 @echo on,调试过没有?如果这样改, 运行时,出现什么提示信息?



作者: yyz2191958    时间: 2023-8-18 07:20
liangzr1976 发表于 2023-8-18 07:16
我的意思是:
你试过将 @echo off 改为 @echo on,调试过没有?如果这样改, 运行时,出现什么提示信息 ...

改了
一闪而过
作者: yyz2191958    时间: 2023-8-18 07:25
527104427 发表于 2023-8-17 20:44
来个PECMD代码:

ifex C:\=?,a    //查C:盘可用空间

搞错了
是需要查看C盘已用空间
作者: 527104427    时间: 2023-8-18 07:37
yyz2191958 发表于 2023-8-18 07:25
搞错了
是需要查看C盘已用空间

find C:\=?,a    //查C:盘总空间
ifex C:\=?,b    //查C:盘剩余空间
calc c=(%a% - %b%) / 1g # 2  //以G为单位,保留两位小数
mess. [C盘已用空间:%c%GB]
作者: 9zhmke    时间: 2023-8-18 10:25
yyz2191958 发表于 2023-8-18 07:11
我这里没有显示  谢谢

批处理没有正常运行有可能是文本使用了UFT8格式,另存或转为ANSI编码格式就可以了。
作者: yyz2191958    时间: 2023-8-18 10:29
9zhmke 发表于 2023-8-18 10:25
批处理没有正常运行有可能是文本使用了UFT8格式,另存或转为ANSI编码格式就可以了。

还是一样
作者: 9zhmke    时间: 2023-8-18 10:45
本帖最后由 9zhmke 于 2023-8-18 11:11 编辑
yyz2191958 发表于 2023-8-18 10:29
还是一样

1、把第一行改成@echo on2、运行CMD
3、把批处理拖到黑窗口里并确定
4、把屏幕上显示的内容截个图贴上来看看

我猜想你双击运行批处理,因为没有加暂停,所以你看不到显示了些什么东西。如果是这样的话,你可以在最后加一行暂停:pause



作者: holley2008    时间: 2023-8-18 16:36
holley2008 发表于 2023-8-17 12:10
wmic LogicalDisk where "Caption='C:'" get FreeSpace/value
  1. @echo off &setlocal enabledelayedexpansion
  2. set "GB=1073741824"
  3. ::已知1GB可以存放1073741824字节
  4. for /f "skip=1 delims=" %%i in ('wmic LogicalDisk where "Caption='C:'" get DeviceID^,FreeSpace^,Size') do (
  5.   for /f "tokens=1-3" %%j in ("%%i") do call :output %%j %%k %%l
  6. )
  7. goto :eof
  8. :output
  9. for /f "tokens=1-4" %%i in ('mshta vbscript:Execute("CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(FormatNumber(%3/%GB%, 2) & "" "" & FormatNumber((%3-%2)/%GB%, 2) & "" "" & FormatNumber(%2/%GB%, 2) & "" "" & Round((%3-%2)*50/%3)):Close"^)') do (
  10.   set "size=      %%i"
  11.   set "used=      %%j"
  12.   set "free=      %%k"
  13.   set /a "nUsed=%%l, nFree=50-%%l"
  14. )
  15. echo,
  16. set c=%1
  17. echo  %c:~0,1% 分区 总空间大小: %size:~-10% GB
  18. echo  %c:~0,1% 分区 已使用空间: %used:~-10% GB
  19. echo  %c:~0,1% 分区 剩余空间:   %free:~-10% GB
  20. pause>nul
  21. goto :eof
复制代码

作者: 窄口牛    时间: 2023-8-18 19:11
有这个就能统计内存的大小了。
作者: 807979023    时间: 2023-8-20 11:09
根据5大的代码,以下批处理在正常系统和pe中可以运行,
请问,如何将wcs变量%c% %d% %e%的值返回到批处理,不在wcs中显示?
相当于把pecmd和wcs当成是第3方命令行工具。

查看分区容量.bat:
@echo off&color 1f&echo.
set /p by=请选择盘符(不用冒号) :
start pecmd by.wcs

by.wcs:
find %by%:\=?,a    //查by盘总空间
ifex %by%:\=?,b    //查by盘剩余空间
calc c=(%a%) / 1g # 2  //以G为单位,保留两位小数
calc d=(%a% - %b%) / 1g # 2  //以G为单位,保留两位小数
calc e=(%b%) / 1g # 2  //以G为单位,保留两位小数
mess. %by%盘空间: 总计 %c%GB  已用 %d%GB  剩余 %e%GB



作者: 527104427    时间: 2023-8-20 12:15
本帖最后由 527104427 于 2023-8-20 12:48 编辑
807979023 发表于 2023-8-20 11:09
根据5大的代码,以下批处理在正常系统和pe中可以运行,
请问,如何将wcs变量%c% %d% %e%的值返回到批处理 ...

@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| calc c=(%%a%%) / 1g # 2^| calc d=(%%a%% - %%b%%) / 1g # 2^| calc e=(%%b%%) / 1g # 2^| writ -,$+0,%%c%% %%d%% %%e%%"') do ( set "TotalSpace=%%a" && set "UsedSpace=%%b" && set "FreeSpace=%%c" )
echo 总空间:%TotalSpace%GB
echo 剩余空间:%FreeSpace%GB
echo 已用空间:%UsedSpace%GB
PAUSE




作者: 807979023    时间: 2023-8-20 16:45
527104427 发表于 2023-8-20 12:15
@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| c ...

运行成功!
作者: yyz2191958    时间: 2023-8-20 18:16
527104427 发表于 2023-8-20 12:15
@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| c ...

运行成功!谢谢
作者: yyz2191958    时间: 2023-8-20 20:39
527104427 发表于 2023-8-20 12:15
@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| c ...

能不能再帮我弄一个使用率:

即:已用空间/总空间*100

谢谢
作者: yyz2191958    时间: 2023-8-20 21:51
本帖最后由 yyz2191958 于 2023-8-20 22:18 编辑

已有 “查看C盘.bat”(PE下使用):
@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| calc c=(%%a%%) / 1g # 2^| calc d=(%%a%% - %%b%%) / 1g # 2^| calc e=(%%b%%) / 1g # 2^| writ -,$+0,%%c%% %%d%% %%e%%"') do ( set "总空间=%%a" && set "已用空间=%%b" && set "剩余空间=%%c" )

echo         C盘          %总空间%          %剩余空间%           %已用空间%  %使用率%
echo        磁盘        总空间        剩余空间        已用空间          使用率
echo.      ---------------------------------------------------------------------
pause>nul 2>nul
***********************************************************************************
希望增加C盘使用率,即:已用空间/总空间*100(不要小数)

1.png (3.96 KB, 下载次数: 64)

1.png

作者: 527104427    时间: 2023-8-20 23:38
yyz2191958 发表于 2023-8-20 21:51
已有 “查看C盘.bat”(PE下使用):
@echo off
for /f "tokens=1,2,3 delims= " %%a in ('"pecmd.exe te ...

@echo off
for /f "tokens=1,2,3,4 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| calc c=(%%a%%) / 1g # 2^| calc d=(%%a%% - %%b%%) / 1g # 2^| calc e=(%%b%%) / 1g # 2^| calc f=(%%a%% - %%b%%) / %%a%% * 100 # 0^| writ -,$+0,%%c%% %%d%% %%e%% %%f%%"') do ( set "总空间=%%a" && set "已用空间=%%b" && set "剩余空间=%%c" && set "使用率=%%d" )

echo         C盘          %总空间%GB        %剩余空间%GB         %已用空间%GB           %使用率%%%
echo        磁盘        总空间        剩余空间        已用空间          使用率
echo.      ---------------------------------------------------------------------
pause>nul 2>nul

作者: yyz2191958    时间: 2023-8-21 07:39
527104427 发表于 2023-8-20 23:38
@echo off
for /f "tokens=1,2,3,4 delims= " %%a in ('"pecmd.exe team find C:\=?,a^| ifex C:\=?,b^| ...

问题解决,再次感谢




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3