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

[数值计算] 【已解决】怎样才能在bat窗口输入数字,就自动显示:B或KB或MB或GB?谢谢

本帖最后由 yyz219 于 2025-2-21 08:29 编辑

完美解决了(获取文件、文件夹大小、输入数字进行计算————都行)
  1. @set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
  2. ::==============================================================================================
  3. if "%~1"=="" goto :Q
  4. ::【双击,输入数字————计算】【拖到图标 Ctrl+V ————文件(夹)的大小】
  5. ::==============================================================================================
  6. echo.%~1|clip.exe
  7. :Q
  8. set/p "路径(数字)=文件(夹)路径 或 数字:"
  9. ::==============================================================================================
  10. set "v=" &set "v=%路径(数字)%"
  11. set "q=0"
  12. dir /ad "%路径(数字)%" >nul 2>&1
  13. if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
  14. cscript /nologo /e:jscript "%~f0" "%v%" %q%
  15. pause>nul 2>nul&exit/b */
  16. n=0, v=WSH.arguments, q=v(1);
  17. if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
  18. else z=+v(0);
  19. while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
  20. z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
  21. WSH.echo(z), WSH.quit();
复制代码
=============================================
拖-文件(夹)到图标(有小数).bat
  1. @set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
  2. if "%~1"=="" exit /b 3
  3. if not exist %1 exit /b 3
  4. set "v=" &set "v=%~1"
  5. set "q=0"
  6. dir /ad %1 >nul 2>&1
  7. if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
  8. cscript /nologo /e:jscript "%~f0" "%v%" %q%
  9. pause>nul 2>nul&exit/b */
  10. n=0, v=WSH.arguments, q=v(1);
  11. if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
  12. else z=+v(0);
  13. while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
  14. z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
  15. WSH.echo(z), WSH.quit();
复制代码
=============================================
@set @x=1 /* &@echo off
(for /d %%d in (*) do cscript /nologo /e:jscript "%~f0" "%%~fd")>结果列表.txt
exit/b */
v=WSH.arguments, fso=WSH.createObject('scripting.fileSystemObject');
n=0, z=fso.getFolder(v(0)).size; while(z/1024>1){z/=1024;n++};
z=z.toFixed(2)+['B','KB','MB','GB','TB'][n];
WSH.echo(z+'        '+v(0)), WSH.quit();
=================================================
在一个文件夹里面运行以后,输出:
15.40MB        D:\桌面\Desktop\!!!\webp-转-png-JPG
328.00B        D:\桌面\Desktop\!!!\新建文件夹
203.65KB        D:\桌面\Desktop\!!!\模拟点关闭按钮
==================================================
怎样才能在bat窗口输入一个数字,就跟上面一样自动显示:B或KB或MB或GB(还希望显示小数)?谢谢
我是小白,希望老师多多帮助

本帖最后由 aloha20200628 于 2025-2-16 23:23 编辑

回复 1# yyz219

以下代码存为 test.bat 运行,代码第7行中(2)设定保留小数位数=2,可自定义...
  1. @set @x=1 /* &@echo off &set "v=" &set/p "v=输入一个数字:"
  2. if not defined v exit/b
  3. cscript /nologo /e:jscript "%~f0" %v%
  4. pause&exit/b */
  5. n=0, v=WSH.arguments, z=+v(0);
  6. while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
  7. z=z.toFixed(2)+['B','KB','MB','GB','TB','PB','EB'][n];
  8. WSH.echo(z), WSH.quit();
复制代码
1

评分人数

TOP

  1. @echo off
  2. echo,
  3. echo,请输入数字选择
  4. echo [0] 显示当前文件夹内文件夹大小
  5. echo [1] 退出
  6. echo,
  7. set /p _select=输入:
  8. if %_select% == 0 set "_path_=%cd:\=\\%\\"
  9. if %_select% == 0 (
  10. echo,
  11. dir /b /ad|(mshta "javascript:with(new ActiveXObject('Scripting.FileSystemObject')){GetStandardStream(1).Write(GetStandardStream(0).readall().replace(/(.+)\r\n/g,function($0,$1){n=0, z=getFolder($1).size;while(z/1024>1){z/=1024;n++};z=z.toFixed(2)+['B','KB','MB','GB','TB'][n];return z+'        '+'%_path_%'+$1+'\r\n';}));close()}"|more)
  12. )
  13. if %_select% == 1 (
  14. rem nil
  15. )
  16. pause&exit/b
复制代码
1

评分人数

    • yyz219: 我需要的不是这样技术 + 1

TOP

回复 2# aloha20200628

成功,非常感谢
我是小白,希望老师多多帮助

TOP

回复 2# aloha20200628
我现在还有一些问题,老师能不能帮解决:
1.现在的代码不能够识别  319,480,686  能不能修改为能够识别
2.如果用BAT获取一个文件的大小(比如:D:\傲梅分区助手单文件.exe),自动显示B、KB、MB、GB。又应该怎样?
3.如果用BAT获取一个文件夹的大小(比如:D:\!exe依赖),自动显示B、KB、MB、GB。又应该怎样?
我是小白,希望老师多多帮助

TOP

回复 1# yyz219

新版如下》可处理 ‘逗号/文件与目录’ ...
  1. @set @x=1 /* &@echo off &set "v=" &set/p "v=输入:"
  2. if not defined v (exit/b) else (set "q=0" &set v=%v:"=%)
  3. if exist "%v%"\ (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
  4. cscript /nologo /e:jscript "%~f0" "%v%" %q%
  5. pause&exit/b */
  6. n=0, v=WSH.arguments, q=v(1);
  7. if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
  8. else z=+v(0);
  9. while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
  10. z=z.toFixed(2)+['B','KB','MB','GB','TB','PB','EB'][n];
  11. WSH.echo(z), WSH.quit();
复制代码
1

评分人数

TOP

回复 6# aloha20200628


    非常感谢,完美解决
我是小白,希望老师多多帮助

TOP

返回列表