目前,我一直在处理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
请注意,使用文件名中该部分中的某些命令使用当前日期完成重命名将不符合当前的需要。
我想知道是否可以使用批处理脚本来获取最后的文件名部分字符来本质上切换位置YY
并DD
交换位置。
另外,我需要用固定的YYMMDD
静态字符代替固定部分之前的其他部分,MYNAME_TLD_EXT_
而不是切换之前的部分,因此最终结果将是MYNAME_TLD_EXT_<YYMMDD>
并且没有文件扩展名。
建立一个DOS脚本来重命名文件
原始文件名:
FIL120_000112_DDMMYY ==> MYNAME_TLD_EXT_YYMMDD
我需要将原始文件名的最后一部分(DDMMYY)转换为YYMMDD。
以下是Windows批处理脚本,它将按照您在问题中列出的内容进行操作-如果您想对此脚本的操作进行解释,请告诉我,我会在逻辑中添加注释以明确说明您是否不确定基于我所拥有的。
您需要将更SET SourceDir=
改为您需要重命名的文件所在位置的完整路径。
我.txt
在示例中使用了这些文件的文件扩展名,但是您可以在DIR /B "%SourceDir%\*_*_*.txt"
下面的逻辑部分中将其更改为任何其他扩展名,如果遇到问题,我会为您提供帮助,请告诉我。
另外,如果您的文件根本没有任何扩展名,请告诉我,我将在此答案中添加另一个示例,其中不包含任何文件扩展名仍然可以为您完成此操作。
请注意,我测试并确认此方法与上述示例和您在上述问题中的解释所预期的一样。
@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] 删除。
我来说两句