【问题标题】:batch rename files keeping substring and adding mm and yy批量重命名文件保留子字符串并添加 mm 和 yy
【发布时间】:2014-09-03 21:24:58
【问题描述】:

我有一系列文件名很长的文件。对于每个包含连字符的文件名,我想将子字符串保留在位置 6-8,将 _FM07_FY14.prn 附加到名称并忽略原始文件名的其余部分。新的扩展名现在是 .prn。两位数 07 代表月份,14 代表年份。可以从“创建日期”属性中找到月份和年份。如果您能告诉我如何从创建日期自动捕获此 mm 和 yy,将不胜感激。硬编码这部分也可以,因为我可以按创建日期对文件进行排序并将它们放在单独的文件夹中。

例如

aaaaaD07.dfdd-1234.A.b.1233 新文件名将是 D07_FM01_FY14.prn

bbcbaA30dls-d343.a.123d 新文件名将是 A30_FM01_FY14.prn

cdq0dG12ir3-438d.dfd.txt 新文件名将是 G12_FM01_FY14.prn

这是我在这里阅读了很多帖子后提出的 .bat 文件,我不知道如何提取 mm 和 yy,所以我对其进行了硬编码。我对 Powershell 不熟悉。我只能处理 .bat 或 .cmd 文件并在命令提示符下运行它。任何和所有的帮助将不胜感激。谢谢!

@ECHO OFF
SETLOCAL


for %%F in (*.*) do (
 SET "name=%%a"  
 set "var=_FM01_FY14.prn"

 ren *-*  "%name:~6,8%var%"
)

*endlocal*

【问题讨论】:

  • 如果有任何帮助,我不会走这条路,而是使用Total Commander,使用多重重命名工具(CTRL-M)和以下重命名字符串:[N6-8]_FM [=tc.creationdate.M]_FY[=tc.creationdate.M]
  • 您确定要的是 creation 日期,而不是 last-update 日期吗?
  • 嗨 Magoo,任何一个日期都可以,因为这些文件在扩展名和名称更改之前不会更新。知道最后更新日期的参数也很酷,以防万一。

标签: date batch-file substring rename


【解决方案1】:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\one"
PUSHD %sourcedir%
FOR /f "delims=" %%a IN (
 'dir /b /a-d "*" '
 ) DO (
 SET name=%%a
 SET fdate=%%~ta
 ECHO(REN "%%a" "!name:~5,3!_FM!fdate:~3,2!_FY!fdate:~8,2!.prn"
)
popd

GOTO :EOF

您需要更改sourcedir 的设置以适应您的情况。

我使用的日期格式是dd/mm/yyyy 如果您的格式不同,那么您需要更改!fdate:~m,2! 短语中的偏移量。 m 的值是从第一个字符到日期字符串的偏移量(第二个参数是要选择的字符数。)

所需的 REN 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(REN 更改为REN 以实际重命名文件。

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2020-12-26
    • 2011-12-27
    • 2017-12-08
    • 2021-02-09
    相关资源
    最近更新 更多