使用Windows CMD或简单的.TXT重命名文件以添加修改为文件名的date

我试图重命名一大批文件,将文件资源pipe理器中的“修改date”列中的date合并到每个YYYYMMDD格式的文件名中。 我能够使用以下步骤从所有文件的所需文件夹生成报告:

  1. 点击提示和技巧文件夹
  2. 按住Shift键并右键单击提示和技巧文件夹
  3. 点击“在这里打开命令窗口”
  4. 键入dir>filename.txt
  5. 点击Enter
  6. 打开提示和技巧文件夹,并find您创build的文件名的文本文件

然后,我将报告作为分隔文本文件拖到Excel中,然后操纵内容,现在我在一列中有“最后修改”date,另一列中有文件名:

修改date | 文件名

1/9/2009 | ArcGIS_TT_Projections_Transformations.doc

2/18/2014 | ArcGIS_TT_Re-Projection_WMAS.docx

1/9/2009 | ArcGIS_TT_Set_Selectable_Layers.doc

1/9/2009 | ArcGIS_TT_Spatial_Join.doc

4/21/2010 | ArcGIS_TT_View_CLU_History_Layer.doc

我只使用如下的重命名脚本已经成功:

 @echo off setlocal enableDelayedExpansion for %%F in ("ArcGIS_TT_Projections_Transformations*.txt") do ( set "name=%%F" ren "!name!" "!name:ArcGIS_TT_Projections_Transformations=ArcGIS_TT_Projections_Transformations_20090109!" ) pause 

但我试图避免重复61个文件的过程。 有没有人有一个Windows CMD的提示或一个简单的.txt的build议,我可以用来更自动地拉入date修改信息到文件名?

谢谢你的帮助!

Ok @newbie,这里是你需要用来迭代文本文件的代码,获取每个文件的修改date,使用修改的date作为文件名的一部分复制每个文件,并删除原始文件。 你非常接近,但是你错过了一些东西。

要获得文件的修改date,我们可以使用set "MDate=%%~tF"

要parsing由set "MDate=%%~tF"提供的date,您将需要指定要在输出中使用%MDate%存储的值的哪些部分。 你可以使用命令set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"set "MDate=%%~tF"的输出从MM / DD / YYYY hh:mm转换为YYYYMMDD。

之后,我们可以使用文件名中的%ParsedDate%的值将文件复制到新文件。

你应该看到两个文件的副本。 如果你想删除原始文件,我们只需要for %%F in ("C:\test\*.txt") do ( del %%F )运行for %%F in ("C:\test\*.txt") do ( del %%F )的命令for %%F in ("C:\test\*.txt") do ( del %%F ) 。 这将使您重命名文本文件。 要将.txt.new转换为.txt,请使用命令ren "C:\test\*.new" *. 。new ren "C:\test\*.new" *.

因为我们在for循环中,所以我们需要改变我们如何解决varables(根据你已经写的东西,你已经知道了)。 我们改变%! 为循环内的variables名称。 所以如果你有variables名的example你可以使用!example!来引用这个variables!example! 在循环内而不是%example%

要使循环内的variables正常工作,我们还需要在循环之前添加setlocal enabledelayedexpansion命令。

这应该涵盖一切。 如果这能解决您的问题,请随时注意或标记答案是正确的。

下面提供了完整的batch file。

 setlocal enabledelayedexpansion for %%F in ("C:\test\*.txt") do ( set "MDate=%%~tF" set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!" copy %%F %%~dpnF_!ParsedDate!%%~xF.new ) for %%F in ("C:\test\*.txt") do ( del %%F ) ren "C:\test\*.new" *. exit