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

[文件操作] 批处理如何将多个文件的文件名、大小、最后修改日期和时间写入指定的新文件?

本帖最后由 pcl_test 于 2016-12-14 21:59 编辑

具体要求:
一个目录下有若干文件,将每个文件的文件名、大小、日期、时间写入一个新指定的文件,文件名为“列表文件.txt”
其中每行一个文件,文件名、大小、日期、时间之间以"|"分隔

谢谢!

回复 2# neorobin


    非常感谢!
我已运行过你提供的代码,基本可以满足要求,但还有2点没达到目标
1. 时间格式要精确到秒,比如21:18:03
2.生成的"文件列表.txt"文件中,每个文件信息一行,你提供的代码没有换行
如能改进以上2点感激不尽!

TOP

回复 6# neorobin


    再次感谢,修改后的代码已看到,待我试验后给你回复!

TOP

回复 6# neorobin


  今晚工作用你第一次提供的代码,时间用HH:mm可以通过,但文件目录如果是中文字符,则产生的“列表文件”是空的。而工作必须使用中文目录名。如果这个问题能解决就OK了。(第二段代码暂未试验)
  谢谢!

TOP

回复 9# fatcat


    你说的两者区别我知道,但2楼的代码确实对中文目录名不起作用,我已试验过。

TOP

回复 11# fatcat


  谢谢回复,等会我把测试目录压缩上传。
  另外,请帮我看一下下面的代码有什么问题,运行后没有结果。
  1. set file=^%%~ti^
  2. set date_val=%date:~0,4%%date:~5,2%%date:~8,2%
  3. set time_val=%time:~0,8%
  4. @echo on
  5. for /f "delims= " %%i in ('dir /x/b/a-d/oN D:\szt') do (echo %%~ni^|^%%~zi^|^%date_val%^|^%time_val%  )
  6. pause
复制代码
 

TOP

回复 13# fatcat

creat_filelist.bat
  1. @echo off & setlocal enabledelayedexpansion
  2. set date_val=%date:~4,4%%date:~9,2%%date:~12,2%
  3. ::set date_val=%date:~0,4%%date:~5,2%%date:~8,2%
  4. > "d:\%date_val%证券清算文件.txt" (
  5.   for /f "tokens=1-3*" %%a in (
  6.     'dir %1 /a-d /od /tW /-c^|findstr "^[1-9].*[0-9][0-9]:[0-9][0-9]"') do (
  7. REM    <nul set /p "=%%d|%%c|%%a|%%b"
  8. REM  echo,%%d^|%%c^|%%a^|%%b
  9.      echo,%%d^|%%c^|%date_val%^|%%b
  10. ) )
  11. move "d:\%date_val%证券清算文件.txt" "%1"
  12. start "" "%1\%date_val%证券清算文件.txt"
复制代码
test_process_call.bat
  1. @echo off
  2. ::set date_val=%date:~4,4%%date:~9,2%%date:~12,2%
  3. set date_val=%date:~0,4%%date:~5,2%%date:~7,2%
  4. set date_month=%date:~5,2%%date:~7,2%
  5. echo 本程序调用creat_filelist.bat生成深圳通发送列表文件
  6. echo 当前日期为:%date_val% %date_month% 请确认电脑日期正确...如日期不正确请按Ctrl-C退出!!
  7. pause
  8. call D:\ts\creat_filelist.bat D:\中文目录
  9. REM call D:\ts\creat_filelist.bat D:\szt
  10. REM call D:\ts\creat_filelist.bat F:\SZTDE\send\B_BCCB\北京银行\20120419
  11. pause
复制代码
以上2个bat文件主要就是测试中文目录名是否可以得到正确结果。试验结果:
在Windows XP系统下结果正确;但在Windows 2000系统下生成的"证券清算文件.txt"为空。
而我的工作环境要求必须使用Windows 2000,这个问题如何解决?

附件:上述两个批处理及示范目录和文件。

TOP

回复 14# neorobin


    Thanks!
现在困扰我的主要问题已经不是文件时间是否精确到“秒”,经过测试,文件时间精确到“分钟”就可以了。
现在主要是在Windos 2000环境下,如果目录名称含有中文字符(比如:D:\中文目录),则此批处理生成的列表文件是空的。(我的工作要求必须使用Windows 2000)
附件是我的测试代码。将附件解压缩至D盘根目录,运行D:\ts\test_process_call.bat。

TOP

回复 16# fatcat


    Windows 2000的时间格式没有问题,分别是2012-04-20 16:07:18
    关键是在Windows 2000环境下,目录名称含有中文字符时生成的列表文件是空的。

TOP

回复 19# fatcat


    Windows 2000 cmd环境下能显示中文,cmd和批处理文件中拷贝含中文字符路径名的文件都没问题
 在cmd下执行chcp,执行结果为:活动的代码页:936

TOP

返回列表