Board logo

标题: [日期时间] 批处理如何将文件的最后修改时间按指定格式添加到文件名的后面? [打印本页]

作者: wslbbdb    时间: 2016-4-23 14:13     标题: 批处理如何将文件的最后修改时间按指定格式添加到文件名的后面?

本帖最后由 pcl_test 于 2016-4-24 13:47 编辑

有个问题请教大神:批处理将文件属性中的修改时间添加到文件名的后面去?如:"行走记录.txt"的修改时间是2016-03-15 11:25,

文件名变成"行走记录2016年03月15日11点25分.txt"

请大侠赐教,小女不胜感激!!
作者: Nsqs    时间: 2016-4-23 16:35

  1. @echo off&pushd %~dp0&call set "ext=txt"
  2. for /f "delims=" %%1 in ('dir/a-d/b *.%ext%')do for /f "tokens=1-5 delims=:/- " %%2 in ("%%~t1")do ren %%1 %%~n1%%2年%%3月%%4日%%5点%%6分%%~x1
复制代码

作者: CrLf    时间: 2016-4-24 08:42

  1. @dir /b /a-d | hash /g con /do:"echo ren ""%s"" ""%s%s.%s""",file,@name:base,tw:"%Y年%m月%d日%H时%M分",@name:ext
复制代码

作者: wslbbdb    时间: 2016-4-24 16:21

@echo off&pushd %~dp0&call set "ext=txt"
for /f "delims=" %%1 in ('dir/a-d/b *.%ext%')do for /f "tokens=1-5 delims=:/- " %%2 in ("%%~t1")do ren %%1 %%~n1%%2年%%3月%%4日%%5点%%6分%%~x1

谢谢你!帮了我大忙了!
作者: wslbbdb    时间: 2016-4-24 17:35

还有一个问题啊:我想要的效果是文件名中只加入最新的修改日期和时间,文件名中以前的日期自动删除,只保留最新的修改日期,怎么办呢?
作者: wslbbdb    时间: 2016-4-24 17:40

只修改当前目录下的文件,不修改子目录中的文件!就这些了,大神帮帮我啊!
作者: happy886rr    时间: 2016-4-24 18:10

本帖最后由 happy886rr 于 2016-4-24 18:21 编辑

回复 6# wslbbdb
弦上之箭
  1. setlocal enabledelayedexpansion&for %%a in (*.txt) do (set "n=%%~na"&set "t=%%~ta"&ren "%%a" "!n:~0,-17!!t:~0,4!年!t:~5,2!月!t:~8,2!日!t:~-5,2!点!t:~-2!分%%~xa")
复制代码

作者: Nsqs    时间: 2016-4-24 18:59

回复 7# happy886rr


    这样是错的
作者: happy886rr    时间: 2016-4-24 19:47

回复 8# Nsqs
我的代码是在他用过你的代码之后,才能使用。好似弦上之箭。
作者: WHY    时间: 2016-4-25 23:02

本帖最后由 WHY 于 2016-4-26 08:39 编辑
  1. dir *.txt | ren -newName {
  2.     $d = $_.LastWriteTime.ToString('yyyy年MM月dd日HH点mm分');
  3.     $_.Name -replace '(\d{4}年\d+月\d+日\d+点\d+分)?(\.txt)$', ($d + '$2')
  4. }
复制代码

作者: Nsqs    时间: 2016-4-30 03:00

回复 9# happy886rr


    然而他的问题在你写代码之前就私信给我了
作者: pcl_test    时间: 2016-7-15 23:55

本帖最后由 pcl_test 于 2016-7-15 23:57 编辑
  1. /*&cls
  2. @echo off
  3. dir /a-d /b *.txt|cscript -nologo -e:jscript "%~f0"
  4. pause&exit
  5. */
  6. function az(n){return n<10?'0'+n:n;}
  7. function FormatDate(str){
  8.     var dlm = new Date(str);
  9.     var y = dlm.getFullYear()+'年';
  10.     var M = az(dlm.getMonth()+1)+'月';
  11.     var d = az(dlm.getDate())+'日';
  12.     var h = az(dlm.getHours())+'时';
  13.     var m = az(dlm.getMinutes())+'分';
  14.     return y+M+d+h+m;
  15. }
  16. var fso = new ActiveXObject('Scripting.FileSystemObject');
  17. while(!WSH.StdIn.AtEndOfStream){
  18.     var file = fso.GetFile(WSH.StdIn.ReadLine());
  19.     var dlm = FormatDate(file.DateLastModified);
  20.     if(/(\d{4}年\d+月\d+日\d+时\d+分)\.[^\.]+$/.test(file.Name)){
  21.         if(RegExp.$1 != dlm){
  22.             file.Name = file.Name.replace(/(.+)\d{4}年\d+月\d+日\d+时\d+分(\.[^\.]+)/, '$1'+dlm+'$2');
  23.         }
  24.     }else{
  25.         file.Name = file.Name.replace(/(.+)(\.[^\.]+)/, '$1'+dlm+'$2')
  26.     }
  27. }
  28. WSH.echo('Done');
复制代码





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