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

[文件操作] 求获取文件路径、名称和大小的代码

求获取文件路径、名称和大小的代码。
其实以下代码已经能获取文件路径和文件名,只可惜,画龙没有点睛,文件的大小不知如何获取。望bat圈内张僧繇点睛,谢谢。
dir /b /s | find "." > (yylogo.com).txt

除以1024得到其KB单位的大小  当心溢出
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.   set str=%%~zi
  4.   if %%~zi lss 1024 (set k=字节&set z=%%~zi)else set k=KB&call :lp
  5.   call echo  %%~fi !z! !K!
  6.   set z=&set n=&set l=
  7. )
  8. pause&exit
  9. :lp
  10.     set/a l=%l%%str:~,1%%%1024,s=%l%%str:~,1%/1024
  11.     if %z%#==0# set z=
  12.     set z=%z%%s%
  13.     set str=%str:~1%
  14.     if defined str goto lp
  15.     set z=%z%.
  16. :lp1
  17.     set/a l*=10,s=l/1024,n+=1
  18.     if %n% lss 3 (
  19.     set z=%z%%s%
  20.     set/a l=l%%1024
  21.     goto lp1
  22. )
复制代码

[ 本帖最后由 terse 于 2008-10-9 16:37 编辑 ]

TOP

回复 18楼 的帖子

大数计算还是交给VBS来做吧^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  cmd的 set /a 语句只能计算 -2^31~2^31-1 这个范围内的数据,无论单独的数字或者是经过运算后的数字,只要超过这个范围,都会出错,在做算术运算的时候要特别小心。用纯批处理只能获取到以字节为单位的数字,若要转化为以K或M为单位的数据,不可避免地要遇到大数的处理问题。若有上G的单个文件,以上的批处理代码将会出现错误。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

来个vbs吧

计算文件大小要准确一些
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. fso.OpenTextFile("a.txt",8,true).WriteLine TreeFile(".")
  3. CreateObject("WScript.Shell").Run "a.txt"
  4. function TreeFile(strPath)
  5.     Set oFolder = fso.GetFolder(strPath)
  6.     set Files = oFolder.Files
  7.     For Each oFile In Files
  8.         s = s & oFile.Path & vbTab & Left(oFile.Size/1024,5) & "KB" & vbCrLf
  9.     Next
  10.     Set Folders = oFolder.Subfolders
  11.     For Each oFolder In Folders
  12.         s = s & TreeFile(oFolder.Path) '递归
  13.     Next
  14. TreeFile = s
  15. End function
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

儿子交给你们了

14楼的谢谢,答案已不是很重要了。
你们恢复了我对专业人员回答问题的信心。以前总在新浪的爱问、百度的知道、雅虎的知识堂找师傅,好难咯。今晚算是有缘各位了,我的一个不眠之夜。。。
儿子交给你们了,我一万个放心。
明天再把他的那个“分小说”的程序交给你们修改,我找不到他的源程序了,c语言写的,非常好用,我经常用,但有一个小缺陷,他无法克服。

[ 本帖最后由 yylogo 于 2008-10-8 01:51 编辑 ]

TOP

4楼的效果也出来了

各位先生,遥寄香烟一包,聊表谢意。

贵站一个字:快

TOP

回复 11楼 的帖子

(时间差问题。。。),7楼的代码原本写错了,已经修改,但仍不是你想要的格式,如下:
  1. @echo off
  2. cd.>a.txt
  3. for /r %%a in (*) do (
  4.       set/a kb=%%~za/1024
  5.       call echo %%a %%kb%%k
  6. )>>a.txt
  7. start a.txt
复制代码
%%~za扩展的大小单位为字节,只好除以1024得到其KB单位的大小,但又不能计算小数,所以只能算出个大概的大小了。
心绪平和,眼藏静谧。

TOP

到位了

7楼修改后,问题彻底解决。谢谢各位。明天一定让他去网站宣传贵站的神速和效率,以及负责。
上网两年,最激动的一个晚上。

TOP

13岁,还真是不错啊。
以在4楼更改,将内容追加到a.txt中。
技术问题请到论坛发帖求助!

TOP

速度真快

我去测试一下,又有朋友回答了。7楼的产生了一个a.txt文件,可里面的内容是这样的:
%~dpnxtza
%~dpnxtza
%~dpnxtza
%~dpnxtza
%~dpnxtza
......
我需要a.txt里面有如下形式的内容:
F:\novel\小说\黑道学生\黑道学生3\黑道学生3.txt  1024k
F:\novel\小说\黑道学生\黑道学生1\黑道学生1.txt  512k
F:\novel\小说\恶魔的法则\恶魔的法则3.txt  256k
F:\novel\小说\恶魔的法则\恶魔的法则4.txt  256k

各位辛苦了,这么晚了

TOP

你儿子加上 find "." 是为了过滤掉文件夹吧?这样就降低了效率
dir自己有开关可以过滤:dir /a-d
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 8楼 的帖子

粗心,7楼的代码写错了,已经修改。
心绪平和,眼藏静谧。

TOP

不好意思

那段代码是我儿子写(13岁)的,他说他没办法获得文件的大小。我一窍不通,楼上几位的回答我一测试,4楼似乎更好,可我不会转换为txt文档,只能在dos环境下看到。
你们能否再修改一下,谢谢。

TOP

  1. @echo off
  2. cd .>a.txt
  3. for /r %%i in (*) do echo>>a.txt %%~dpnxtzi
  4. start a.txt
复制代码
%%~ta 文件的修改日期
%%~za 文件的大小信息
可以组合起来使用。 以上代码循环子目录。

[ 本帖最后由 pusofalse 于 2008-10-8 01:14 编辑 ]
心绪平和,眼藏静谧。

TOP

返回列表