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

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

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

  1. @echo off
  2. for %%a in (*.txt) do (
  3.   echo 文件路径:%%~dpa
  4.   echo 文件名称:%%~nxa
  5.   echo 文件大小:%%~za
  6. )
复制代码
for /?
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    %~sI        - expanded path contains short names only
    %~aI        - expands %I to file attributes of file
    %~tI        - expands %I to date/time of file
    %~zI        - expands %I to size of file
    %~$PATH:I   - searches the directories listed in the PATH
                   environment variable and expands %I to the
                   fully qualified name of the first one found.
                   If the environment variable name is not
                   defined or the file is not found by the
                   search, then this modifier expands to the
                   empty string

The modifiers can be combined to get compound results:

    %~dpI       - expands %I to a drive letter and path only
    %~nxI       - expands %I to a file name and extension only
    %~fsI       - expands %I to a full path name with short names only
    %~dp$PATH:I - searches the directories listed in the PATH
                   environment variable for %I and expands to the
                   drive letter and path of the first one found.
    %~ftzaI     - expands %I to a DIR like output line

In the above examples %I and PATH can be replaced by other valid
values.  The %~ syntax is terminated by a valid FOR variable name.
Picking upper case variable names like %I makes it more readable and
avoids confusion with the modifiers, which are not case sensitive.
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @(for /r %%a in (*) do echo %%~dpnxtza)&pause
复制代码
  1. 另外,FOR 变量参照的替换已被增强。您现在可以使用下列
  2. 选项语法:
  3.      ~I         - 删除任何引号("),扩充 %I
  4.      %~fI        - 将 %I 扩充到一个完全合格的路径名
  5.      %~dI        - 仅将 %I 扩充到一个驱动器号
  6.      %~pI        - 仅将 %I 扩充到一个路径
  7.      %~nI        - 仅将 %I 扩充到一个文件名
  8.      %~xI        - 仅将 %I 扩充到一个文件扩展名
  9.      %~sI        - 扩充的路径只含有短名
  10.      %~aI        - 将 %I 扩充到文件的文件属性
  11.      %~tI        - 将 %I 扩充到文件的日期/时间
  12.      %~zI        - 将 %I 扩充到文件的大小
  13.      %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩充
  14.                    到找到的第一个完全合格的名称。如果环境变量名
  15.                    未被定义,或者没有找到文件,此组合键会扩充到
  16.                    空字符串
  17. 可以组合修饰符来得到多重结果:
  18.      %~dpI       - 仅将 %I 扩充到一个驱动器号和路径
  19.      %~nxI       - 仅将 %I 扩充到一个文件名和扩展名
  20.      %~fsI       - 仅将 %I 扩充到一个带有短名的完整路径名
  21.      %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
  22.                    到找到的第一个驱动器号和路径。
  23.      %~ftzaI     - 将 %I 扩充到类似输出线路的 DIR
复制代码
心绪平和,眼藏静谧。

TOP

当前目录,不含子目录
  1. @echo off
  2. for %%i in (*) do if exist "%%i" >>a.txt echo %%~dpnxi %%~zi
  3. start "" "a.txt"
复制代码

含子目录
  1. @echo off
  2. for /r %%i in (*) do if exist "%%i" >>a.txt echo %%i %%~zi
  3. start "" "a.txt"
复制代码

[ 本帖最后由 随风 于 2008-10-8 01:29 编辑 ]
技术问题请到论坛发帖求助!

TOP

两位好快。
稍慢一点就是4楼了,呵呵。。。
技术问题请到论坛发帖求助!

TOP

谢谢二位的中英文回答

谢谢楼上二位的中英文回答。
可没有我需要的效果。我需要某文件夹内所有的文件路径、文件名和大小的信息转换为一个a.txt文档。希望有朋友能将下面的代码改动一下,从而可以获得文件的大小信息。
dir /b /s | find "." > a.txt
这个地方真好,问题总有人回答。不像有些地方几个月也没人理睬。同仁们,好网站要记得收藏哦。

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

不好意思

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

TOP

回复 8楼 的帖子

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

TOP

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

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

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

TOP

到位了

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

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

4楼的效果也出来了

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

贵站一个字:快

TOP

返回列表