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

[文本处理] 批处理如何将多个文件以其创建日期时间重命名

本帖最后由 pcl_test 于 2016-9-22 20:17 编辑

文件夹下面文件,按创建时间重命名,精确到秒,麻烦了  真的不会!
比如一个文件夹下面生成了下列文件:
刘德华.mp4
张学友.mp4
黎明.mp4
郭富城.mp4

他们创建的时间分别是:
2016年9月22日16点36分51秒
2016年9月22日16点36分56秒
2016年9月22日16点37分04秒
2016年9月22日16点38分13秒

批处理一下变成:
2016-09-22-16-36-51.mp4
2016-09-22-16-36-56.mp4
2016-09-22-16-37-04.mp4   (4秒这个地方用两位数字填充,不要 2016-09-22-16-37-4    )
2016-09-22-16-38-13.mp4



  我只能精确到分钟  ,而且不能按照上面的方式重命名! 麻烦大神了!


精确到分钟的代码如下:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d /b') do (
set "t=%%~ta"
set "t=!t:~0,4!-!t:~5,2!-!t:~8,2! !t:~11,2!.!t:~14,2!"
if not "%~n0"=="%%~na" if not exist "!t!%%~xa" (ren "%%~nxa" "!t!%%~xa") else (
call :rennum "%%~nxa")
)
goto :eof
:rennum
set n=1
:loop
set "name=%~1"
set "ext=%~x1"
if not exist "!t!-!n!!ext!" (ren "%name%" "!t!-!n!!ext!") else (
set /a n+=1
goto loop
)
1

评分人数

本帖最后由 DiamondbacK 于 2016-9-22 20:01 编辑
  1. PowerShell -c "Get-ChildItem *.* | Rename-Item -NewName { ('{0:s}' -f $_.CreationTime -replace '[ T:]', '-') + $_.extension }"
复制代码
  1. PowerShell -c "Get-ChildItem *.* | Rename-Item -NewName { ('{0:yyyy-MM-dd-HH-mm-ss}' -f $_.CreationTime) + $_.extension }"
复制代码

TOP

  1. @echo off
  2. set "MyPath=%~p0"
  3. pushd "%~dp0"
  4. for /f "tokens=1*" %%i in ('wmic DataFile where "Drive='%~d0' and Path='%MyPath:\=\\%'" get CreationDate^,Name^|find ":"') do (
  5.     for /f "delims=" %%j in ("%%j") do (
  6.         if /i not "%~f0" == "%%~fj" (
  7.             set "s=%%~ni"
  8.             setlocal enabledelayedexpansion
  9.             set "s=!s:~0,4!-!s:~4,2!-!s:~6,2!-!s:~8,2!-!s:~10,2!-!s:~-2!"
  10.             set "name=!s!%%~xj"
  11.             for /l %%k in (1 1 100) do if exist "!name!" set "name=!s!-%%k%%~xj"
  12.             for %%k in ("!name!") do endlocal & ren "%%~fj" "%%~k"
  13.         )
  14.     )
  15. )
  16. pause
复制代码

TOP

本帖最后由 pcl_test 于 2016-9-24 12:59 编辑
  1. //&cls&dir /a-d/b|findstr /v "%~nx0$"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. Date.prototype.Format = function(){
  3.     function add(t){return t>9?t:'0'+t}
  4.     var y = this.getFullYear();
  5.     var M = this.getMonth()+1;
  6.     var d = this.getDate();
  7.     var h = this.getHours();
  8.     var m = this.getMinutes();
  9.     var s = this.getSeconds();
  10.     return y+'-'+add(M)+'-'+add(d)+'-'+add(h)+'-'+add(m)+'-'+add(s)
  11. }
  12. var fso = new ActiveXObject('Scripting.FileSystemObject')
  13. while(!WSH.StdIn.AtEndOfStream){
  14.     var line = WSH.StdIn.ReadLine();
  15.     var f = fso.GetFile(line);
  16.     var dt = (new Date(f.DateCreated)).Format();
  17.     var fpath = fso.GetParentFolderName(line);
  18.     var oldname = fso.GetBaseName(line);
  19.     var fext = fso.GetExtensionName(line);
  20.     var newname = dt+(fext?'.'+fext:'');
  21.     var tf = (fpath?fpath+'\\':'')+newname;
  22.     if(oldname.indexOf(dt)<0){  //不处理文件名末尾已带有创建日期时间的文件
  23.         if(fso.FileExists(tf)){
  24.             f.Name = oldname+'_'+newname;  //如果出现重名则保留原文件名
  25.         }else f.Name = newname;
  26.     }
  27. }
  28. WSH.Echo('Done');
复制代码

TOP

返回列表