找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 7021|回复: 10

[文件操作] 文件大小怎么用批处理修改成可读大小(如KB/MB/GB)

[复制链接]
发表于 2025-4-22 13:03:58 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 设置输出文件名(默认UTF8编码)
  4. set "output=FileList_UTF8.txt"

  5. :: 使用PowerShell获取文件信息
  6. powershell -Command "Get-ChildItem -Recurse -File | ForEach-Object { '{0}|{1} bytes' -f $_.FullName, $_.Length } | Out-File -Encoding UTF8 '%output%'"

  7. echo 文件列表已生成: %output%
  8. pause
复制代码
发表于 2025-4-22 15:55:17 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-22 18:21 编辑

回复 1# 李道001

基于一楼代码改写如下,代码第6行中的字段 {1:n2} 控制文件尺寸的小数点位数,预设保留2位》n0=整数,n1=保留小数点1位,...

  1. @echo off
  2. :: 设置输出文件名(默认ansi编码)
  3. set "output=FileList_ansi.txt"
  4. set "tmpF=%temp%\%output%"
  5. :: 使用PowerShell获取文件信息
  6. powershell "dir -R -File | %%{$n,$z=0,$_.length; while($z/1024 -gt 1){$z/=1024;$n++}; $u=('B','KB','MB','GB','TB')[$n]; """{0} ^| {1:n2} $u""" -f $_.FullName,$z} | Out-File -Enc default '%tmpF%' "
  7. move /y "%tmpF%" "%output%">nul 2>nul
  8. echo,文件列表已生成: %output%
  9. pause&exit/b
复制代码
发表于 2025-4-22 16:33:23 | 显示全部楼层
总是保留2位小数
将第7行tostring('f2')中的2换成其他数字可变更小数位

  1. @echo off

  2. :: 设置输出文件名(默认UTF8编码)
  3. set "output=FileList_UTF8.txt"

  4. :: 使用PowerShell获取文件信息
  5. powershell -Command "$saisu={$i=0;$s=[decimal]$args[0];while($s -ge 1024 -and $i -lt 3){$i++;$s/=1kb};($s.tostring('f2'),('','K','M','G')[$i],'B') -join ''};Get-ChildItem -Recurse -File |where{$_.name -notmatch '%output%'}|foreach{'{0}|{1} bytes ({2})' -f $_.fullname,$_.length,($($saisu.invoke($_.length)))}| Out-File -Encoding UTF8 '%output%'"

  6. echo 文件列表已生成: %output%
  7. pause
复制代码
 楼主| 发表于 2025-4-22 17:53:28 | 显示全部楼层
回复 2# aloha20200628


    不好意思大佬,我的系统需要输出ANSI格式目录文件,我直接改编码出错,能在帮着改一下吗
发表于 2025-4-22 18:14:13 | 显示全部楼层
回复 4# 李道001

二楼代码已改为用 ansi 编码输出结果文件...
 楼主| 发表于 2025-4-22 20:32:21 | 显示全部楼层
回复 5# aloha20200628
输出文件名能不能取磁盘名,那样更方便管理一点。
发表于 2025-4-22 21:01:21 | 显示全部楼层
回复 6# 李道001

盘符用何格式加入文件名?请举例说明…
 楼主| 发表于 2025-4-22 22:19:45 | 显示全部楼层
回复 7# aloha20200628


   
 楼主| 发表于 2025-4-22 22:29:25 | 显示全部楼层
本帖最后由 李道001 于 2025-4-22 22:52 编辑

<img src="https://free4.yunpng.top/2025/04/22/6807acd258b4e.png" alt="捕获.PNG" title="捕获.PNG" />
发表于 2025-4-22 22:50:13 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-22 22:52 编辑

回复 6# 李道001

请将二楼代码第3行改为 set "output=FileList_ansi[%cd:~,1%].txt",即把当前目录包含的盘符提取追加到输出文件名末尾,例如 FileList_ansi[D].txt
 楼主| 发表于 2025-4-23 11:33:30 | 显示全部楼层
回复 10# aloha20200628


    已完美解决,谢谢老师的耐心指导
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:23 , Processed in 0.018842 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表