在Windows批处理中使用创建日期和时间重命名文件

我有一个包含数千个pdf和tif的目录树.一个文件夹可能包含多个pdf或tif,在这种情况下,它们编号为.pdf,2.pdf等…我必须使它们可用并确保它们是最先处理的最旧文件 – 所以我想用它们重命名它们创建日期和时间(1.pdf – > 20150415481876.pdf):

目前我用

@echo off  
set datetime=%~t1
set name=%~n1 
set extension=%~x1
set year=%datetime:~6,4%
set month=%datetime:~3,2%
set day=%datetime:~0,2%
set hour=%datetime:~11,2%
set min=%datetime:~14,2%
ren %1 "%year%%month%%day%%hour%%min%%name%%extension%"

现在可以正确地将文件重命名为1.tif到2014052513241.tif(文件创建于25.05.2014 13:24).但是,如果我用batch.bat * .tif调用批处理,我如何能够在同一个文件夹中处理多个文件(例如1.tif 2.tif 3.tif)?
谢谢

@if (@X)==(@Y) @end /* JScript comment
    @echo off

    set "extension=tiff"
    set "directory=c:\somedir"

    pushd "%directory%"

    setlocal enableDelayedExpansion
    for %%a in (*%extension%) do (
        for /f %%# in ('cscript //E:JScript //nologo "%~f0" %%a') do set "cdate=%%#"
        echo ren "%%a" "!cdate!%%~xa"
    )

    rem cscript //E:JScript //nologo "%~f0" %*
    exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */


FSOObj = new ActiveXObject("Scripting.FileSystemObject");
var ARGS = WScript.Arguments;
var file=ARGS.Item(0);

var d1=FSOObj.GetFile(file).DateCreated;

d2=new Date(d1);
var year=d2.getFullYear();
var mon=d2.getMonth();
var day=d2.getDate();
var h=d2.getHours();
var m=d2.getMinutes();
var s=d2.getSeconds();
var ms=d2.getMilliseconds();

if (mon<10){mon="0"+mon;}
if (day<10){day="0"+day;}
if (h<10){h="0"+h;}
if (m<10){m="0"+m;}
if (s<10){s="0"+s;}
if (ms<10){ms="00"+ms;}else if(ms<100){ms="0"+ms;}

WScript.Echo(""+year+mon+day+h+m+s+ms);

设置你自己的扩展和目录,将目录中给定扩展名的所有文件重命名为创建日期.格式为YYYYMMDDhhmm.Renaming被回显,所以你可以看到一切是否正常.如果是从第9行删除回声字.

相关文章

文章浏览阅读2.2k次,点赞6次,收藏20次。在我们平时办公工作...
文章浏览阅读1k次。解决 Windows make command not found 和...
文章浏览阅读3.2k次,点赞2次,收藏6次。2、鼠标依次点击“计...
文章浏览阅读1.3w次。蓝光版属于高清版的一种。BD英文全名是...
文章浏览阅读974次,点赞7次,收藏8次。提供了更强大的功能,...
文章浏览阅读1.4w次,点赞5次,收藏22次。如果使用iterator的...