构建DOS批处理脚本以重命名文件

希洛克

目前,我一直在处理DOS批处理脚本的问题,我需要重命名文件的帮助。

这是我要搜索的重命名方案:

原始文件名

FIL120_000112_DDMMYY ==> MYNAME_TLD_EXT_YYMMDD 

我需要将原始文件名的最后一部分(DDMMYY)转换为YYMMDD

它应该像这样

FIL120_000112_301215 ==> MYNAME_TLD_EXT_151230
FIL120_000112_311215 ==> MYNAME_TLD_EXT_151230
FIL120_000112_040116 ==> MYNAME_TLD_EXT_151230
FIL120_000112_050116 ==> MYNAME_TLD_EXT_151230

请注意,使用文件名中该部分中的某些命令使用当前日期完成重命名将不符合当前的需要。

我想知道是否可以使用批处理脚本来获取最后的文件名部分字符来本质上切换位置YYDD交换位置。

另外,我需要用固定的YYMMDD静态字符代替固定部分之前的其他部分MYNAME_TLD_EXT_而不是切换之前的部分,因此最终结果将是MYNAME_TLD_EXT_<YYMMDD>并且没有文件扩展名。

IT暴徒忍者

建立一个DOS脚本来重命名文件

原始文件名:

FIL120_000112_DDMMYY ==> MYNAME_TLD_EXT_YYMMDD

我需要将原始文件名的最后一部分(DDMMYY)转换为YYMMDD。

以下是Windows批处理脚本,它将按照您在问题中列出的内容进行操作-如果您想对此脚本的操作进行解释,请告诉我,我会在逻辑中添加注释以明确说明您是否不确定基于我所拥有的。

您需要将更SET SourceDir=改为您需要重命名的文件所在位置的完整路径。

.txt在示例中使用了这些文件文件扩展名,但是您可以在DIR /B "%SourceDir%\*_*_*.txt"下面的逻辑部分中将其更改为任何其他扩展名,如果遇到问题,我会为您提供帮助,请告诉我。

另外,如果您的文件根本没有任何扩展名,请告诉我,我将在此答案中添加另一个示例,其中不包含任何文件扩展名仍然可以为您完成此操作。

请注意,我测试并确认此方法与上述示例和您在上述问题中的解释所预期的一样。


Windows批处理脚本示例

文件名解析和重命名带有扩展名的文件

@ECHO ON

SET SourceDir=C:\PathForFilesToRename

FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*.txt""') DO (

    CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA" "%%~XA"

)
GOTO :EOF

:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%
SET Extension=%~3

REN "%~1" "%FnamePart1%_%YY%%MM%%DD%%Extension%"
GOTO :EOF

文件名解析和重命名文件没有扩展名

@ECHO ON

SET SourceDir=C:\PathForFilesToRename

FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO (

    CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA"

)
GOTO :EOF

:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%

REN "%~1" "%FnamePart1%_%YY%%MM%%DD%"
GOTO :EOF

文件名解析和重命名文件没有带有静态重命名部分的扩展名

重要说明:如果两个文件在使用静态名称重命名时将具有相同的YYMMDD名称,那么这将是一个问题,但是只要同一文件夹中的两个文件都不会具有相同的YYMMDD名称,那么这应该可以在没有如果有一个文件已经使用该静态名称重命名,然后下一个文件尝试使用该静态名称重命名,那将是一个问题。)

变量注意:在下面,SET StaticFnamePart=您可以将其设置为将文件的静态重命名部分向前设置的任何内容,并将其用于放置重命名文件的该部分中。

@ECHO ON

SET SourceDir=C:\PathForFilesToRename
SET StaticFnamePart=MYNAME_TLD_EXT

FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO (

    CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA"

)
GOTO :EOF

:RenameLogic
SET FnameNoExt=%~2
FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S)
SET FnameDtPart=%FnameNoExt:~-6%
SET DD=%FnameDtPart:~0,2%
SET MM=%FnameDtPart:~2,2%
SET YY=%FnameDtPart:~-2%

REN "%~1" "%StaticFnamePart%_%YY%%MM%%DD%"
GOTO :EOF

更多资源和阅读

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

制作DOS批处理脚本以在文件单词之间重命名

批处理脚本以交换单词/重命名文件

批处理脚本以使用内容重命名PDF文件

需要帮助完成批处理脚本以重命名文件

批处理脚本以批量重命名文件-去除括号和之间的所有字符

批处理脚本以递归方式移动.txt文件并重命名它们以替换特定字符

使用批处理脚本重命名文件夹

如何使用批处理脚本使用模式重命名文件

仅使用批处理脚本重命名文件夹

使用批处理脚本旋转重命名编号文件

批处理脚本以更改txt文件

批处理文件重命名与Python

重命名文件模式Windows批处理

如何重命名批处理文件

如何使用批处理脚本重命名多个文件夹和子文件?

用于重命名子文件夹中文件的批处理脚本

用于复制和重命名文件的批处理脚本文件

DOS批处理脚本以遍历NTFS驱动器

使用Windows cmd或批处理脚本按照条形码重命名文件

使用批处理脚本重命名目录中的多个文件

在使用 ghostscript 批处理脚本解锁 PDF 之前重命名文件

Winrar批处理脚本(略有改动)-将提取的文件重命名为当前目录

根据内容标准重命名大量 txt 文件(批处理脚本帮助)

Windows批处理脚本重命名具有随机名称的文件?

使用 bash 脚本,如何连接文本以重命名文件?

批处理+ Powershell脚本重命名器错误的目录错误

Linux批处理音乐目录重命名脚本/命令(bash)

在批处理脚本中使用 WMIC 重命名 PC 的问题

批处理脚本以删除特定的文件夹