Board logo

标题: [文本处理] 如何输出目录下的文件名以及大小 到文档 [打印本页]

作者: bear0328    时间: 2018-3-30 11:58     标题: 如何输出目录下的文件名以及大小 到文档

如题,现在我想将文件夹内的文件名以及大小输出到文档,比如说txt,或者xls等.现在有一个代码,可以满足基本需求,但是希望可以完善一下,请各位帮忙
@echo off
(for /f "delims=" %%a in ('dir /ad /b') do (
   for /f "delims=件字 tokens=2" %%b in ('dir "%%a" /s /a ^|findstr "个文件"') do (set #s=%%b)
   call echo %%a %%#s%%
))>dest.txt
pause

这个代码输出的文件大小为字节,希望以GB为单位来显示,还有因为最后要导入到Excel中,所以希望在文件大小前加入分隔符,谢谢大家.
作者: yhcfsr    时间: 2018-3-30 12:13

本帖最后由 yhcfsr 于 2018-3-30 12:17 编辑

显示GB就有点麻烦了,2G以下文件可以算术计算,2G以上只能字符串截取方法来计算了。
问一:是否都是GB级的文件?
问二:是否需要保留小数点?几位?
作者: zaqmlp    时间: 2018-3-30 12:38

  1. >result.csv powershell "dir|?{$_ -is [System.IO.DirectoryInfo]}|%%{'\"'+$_.Name+'\",'+(dir $_.FullName -r|?{$_ -is [System.IO.FileInfo]}|measure length -sum|%%{($_.sum/1gb).ToString('0.00GB')})}"
复制代码

作者: yhcfsr    时间: 2018-3-30 14:30

GB级别显示2.31GB这样的数字;MB级别显示23MB这样的数字;MB以下显示0MB
  1. @echo oFF
  2. for /f "delims=" %%a in ('dir /a-d/s/b') do (
  3. call :calc_size %%~za size
  4. setlocal enabledelayedexpansion
  5. echo;%%a !size!
  6. endlocal
  7. )
  8. pause&exit
  9. :calc_size
  10. setlocal&set "var=%1"
  11. set "var=%var:~,-6%"
  12. if not "%var%"=="" set/a "GB=%var%>>10"&set/a "MB=%var%%%(1<<10)"
  13. if "%MB%"=="" set "var=0 MB"&goto:end
  14. if "%GB%"=="0" set "var=%MB% MB"&goto:end
  15. if "%MB:~1%"=="" set "MB=0%MB%"
  16. if "%MB:~2%"=="" set "MB=0%MB%"
  17. set "var=%GB%.%MB:~,2% GB"
  18. :end
  19. endlocal&set "%2=%var%"&goto:eof
复制代码

作者: bear0328    时间: 2018-3-30 16:23

回复 4# yhcfsr
感谢您的回复,GB小数点后面2位可以的,但是您的代码运行以后没有效果.
作者: bear0328    时间: 2018-3-30 16:30

回复 3# zaqmlp
您的这个代码可以,但是文件的大小显示的不全,有的文件显示了尺寸,有的没有显示.麻烦帮忙看下?
作者: bear0328    时间: 2018-3-30 16:31

回复 6# bear0328
好像和我的文件名有关系,我的文件名有些带有"[]"这样的符号,这样的文件名,不能显示出尺寸.
作者: zaqmlp    时间: 2018-3-30 16:41

回复 6# bear0328

尺寸?干嘛不说体重呢
dir -Liter $_.FullName -r
作者: bear0328    时间: 2018-3-30 16:54

回复  bear0328

尺寸?干嘛不说体重呢
dir -Liter  $_.FullName -r
zaqmlp 发表于 2018-3-30 16:41

大神,膜拜!!!!!
作者: bear0328    时间: 2018-3-30 21:37

回复 8# zaqmlp
再想麻烦一下,提供的代码排序貌似不正常,可以按照名字顺序排序么?>




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