
标题: [数值计算] 【已解决】怎样才能在bat窗口输入数字,就自动显示:B或KB或MB或GB?谢谢 [打印本页]
作者: yyz219 时间: 6 天前 21:37 标题: 【已解决】怎样才能在bat窗口输入数字,就自动显示:B或KB或MB或GB?谢谢
本帖最后由 yyz219 于 2025-2-21 08:29 编辑
完美解决了(获取文件、文件夹大小、输入数字进行计算————都行)- @set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
- ::==============================================================================================
- if "%~1"=="" goto :Q
- ::【双击,输入数字————计算】【拖到图标 Ctrl+V ————文件(夹)的大小】
- ::==============================================================================================
- echo.%~1|clip.exe
- :Q
- set/p "路径(数字)=文件(夹)路径 或 数字:"
- ::==============================================================================================
- set "v=" &set "v=%路径(数字)%"
- set "q=0"
- dir /ad "%路径(数字)%" >nul 2>&1
- if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
- cscript /nologo /e:jscript "%~f0" "%v%" %q%
- pause>nul 2>nul&exit/b */
- n=0, v=WSH.arguments, q=v(1);
- if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
- else z=+v(0);
- while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
- z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
- WSH.echo(z), WSH.quit();
复制代码
=============================================
拖-文件(夹)到图标(有小数).bat- @set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(3)————3位小数)】
- if "%~1"=="" exit /b 3
- if not exist %1 exit /b 3
- set "v=" &set "v=%~1"
- set "q=0"
- dir /ad %1 >nul 2>&1
- if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
- cscript /nologo /e:jscript "%~f0" "%v%" %q%
- pause>nul 2>nul&exit/b */
- n=0, v=WSH.arguments, q=v(1);
- if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
- else z=+v(0);
- while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
- z=z.toFixed(3)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n];
- 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 时间: 6 天前 22:40
本帖最后由 aloha20200628 于 2025-2-16 23:23 编辑
回复 1# yyz219
以下代码存为 test.bat 运行,代码第7行中(2)设定保留小数位数=2,可自定义...- @set @x=1 /* &@echo off &set "v=" &set/p "v=输入一个数字:"
- if not defined v exit/b
- cscript /nologo /e:jscript "%~f0" %v%
- pause&exit/b */
- n=0, v=WSH.arguments, z=+v(0);
- while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
- z=z.toFixed(2)+['B','KB','MB','GB','TB','PB','EB'][n];
- WSH.echo(z), WSH.quit();
复制代码
作者: Five66 时间: 5 天前 00:29
- @echo off
- echo,
- echo,请输入数字选择
- echo [0] 显示当前文件夹内文件夹大小
- echo [1] 退出
- echo,
-
- set /p _select=输入:
-
- if %_select% == 0 set "_path_=%cd:\=\\%\\"
- if %_select% == 0 (
- echo,
- 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)
- )
-
- if %_select% == 1 (
- rem nil
- )
-
- pause&exit/b
复制代码
作者: yyz219 时间: 5 天前 07:25
回复 2# aloha20200628
成功,非常感谢
作者: yyz219 时间: 5 天前 08:22
回复 2# aloha20200628
我现在还有一些问题,老师能不能帮解决:
1.现在的代码不能够识别 319,480,686 能不能修改为能够识别
2.如果用BAT获取一个文件的大小(比如:D:\傲梅分区助手单文件.exe),自动显示B、KB、MB、GB。又应该怎样?
3.如果用BAT获取一个文件夹的大小(比如:D:\!exe依赖),自动显示B、KB、MB、GB。又应该怎样?
作者: aloha20200628 时间: 5 天前 09:26
回复 1# yyz219
新版如下》可处理 ‘逗号/文件与目录’ ...- @set @x=1 /* &@echo off &set "v=" &set/p "v=输入:"
- if not defined v (exit/b) else (set "q=0" &set v=%v:"=%)
- if exist "%v%"\ (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%"
- cscript /nologo /e:jscript "%~f0" "%v%" %q%
- pause&exit/b */
- n=0, v=WSH.arguments, q=v(1);
- if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size }
- else z=+v(0);
- while (z/1024>=1) {z/=1024; n++; if (n==6) break;}
- z=z.toFixed(2)+['B','KB','MB','GB','TB','PB','EB'][n];
- WSH.echo(z), WSH.quit();
复制代码
作者: yyz219 时间: 5 天前 09:41
回复 6# aloha20200628
非常感谢,完美解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |