首先,我知道Stackexchange上有很多批处理文件重命名问题,但是在这里或在网上搜索没有任何令人满意的结果。此外,我知道这可以通过其他方式完成,但我总是能够以我想要的方式获得批处理文件(简单的任务,没有什么过于复杂)。即使我找到了一个更简单的解决方案(例如使用GUI辅助工具),我仍然希望解决这个问题的知识。
我正在尝试重命名一堆我(定期)从手机导入的图像。图像的默认名称模板是 的 IMG_YYYYMMDD_HHMMSS.jpg ;例如:IMG_20121224_165222.jpg
所以,假设我有一个包含这些文件的文件夹(以及其他文件)。我想选择以IMG开头的文件,并将文件重命名为以下格式: YYYY-MM-DD HH.MM.SS.jpg
对我来说,使用子串开始这似乎相当微不足道,但我无法让它工作。我对变量使用了延迟扩展;我已将我正在使用的代码添加到本文末尾。
现在上面的示例文件(IMG_20121224_165222.jpg),而不是“2012-12-24 16.52.22.jpg”,我得到了“2012-12-24 16.NAME:15,2NAME:~17,2 .jpg“(当我对我正在使用的变量进行ECHOed时,请参考下面的代码)。 正如你所注意到的那样,奇怪的行为是在第一个时期(在时间字段中)之后开始的,所以我尝试用日期中的连字符替换它,但仍然是禁止的;我现在得到“2012-12-24 16-NAME:15,2NAME:~172.jpg”。
我完全不知道为什么会这样。 if条件得到满足,只有子串在某一点之后才会扩展。
任何和所有帮助将受到高度赞赏。谢谢!
以下是我用于此任务的最新代码(将名称列表输出到要检查的txt文件)。
@ECHO OFF>NUL
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (*.*) DO (
SET NAME=%%A
IF /I "!NAME:~0,3!"=="IMG" (
ECHO !NAME:~4,4!-!NAME:~8,2!-!NAME:~10,2! !NAME:~13,2!-!NAME:15,2!-!NAME:~17,2!.jpg >> output.txt
)
)
PAUSE
对于那些感兴趣的人,这是输出文件内容:
2012-12-24 16-NAME:15,2NAME:~17,2.jpg
2012-12-25 17-NAME:15,2NAME:~17,2.jpg
2012-12-25 17-NAME:15,2NAME:~17,2.jpg
2012-12-25 19-NAME:15,2NAME:~17,2.jpg
2012-12-25 21-NAME:15,2NAME:~17,2.jpg
2012-12-25 21-NAME:15,2NAME:~17,2.jpg
2012-12-25 21-NAME:15,2NAME:~17,2.jpg
2012-12-27 18-NAME:15,2NAME:~17,2.jpg
2012-12-27 22-NAME:15,2NAME:~17,2.jpg
2012-12-27 22-NAME:15,2NAME:~17,2.jpg
2012-12-28 00-NAME:15,2NAME:~17,2.jpg
2012-12-28 00-NAME:15,2NAME:~17,2.jpg
2012-12-28 02-NAME:15,2NAME:~17,2.jpg
2012-12-28 03-NAME:15,2NAME:~17,2.jpg
2012-12-28 03-NAME:15,2NAME:~17,2.jpg
2012-12-30 08-NAME:15,2NAME:~17,2.jpg
2012-12-30 08-NAME:15,2NAME:~17,2.jpg
2012-12-30 08-NAME:15,2NAME:~17,2.jpg
2012-12-30 08-NAME:15,2NAME:~17,2.jpg
2012-12-30 08-NAME:15,2NAME:~17,2.jpg
2012-12-31 03-NAME:15,2NAME:~17,2.jpg
2012-12-31 03-NAME:15,2NAME:~17,2.jpg
2012-12-31 03-NAME:15,2NAME:~17,2.jpg
2012-12-31 03-NAME:15,2NAME:~17,2.jpg
2012-12-31 21-NAME:15,2NAME:~17,2.jpg
2012-12-31 21-NAME:15,2NAME:~17,2.jpg
2012-12-31 21-NAME:15,2NAME:~17,2.jpg
2012-12-31 21-NAME:15,2NAME:~17,2.jpg
2012-12-31 21-NAME:15,2NAME:~17,2.jpg
2013-01-01 14-NAME:15,2NAME:~17,2.jpg
2013-06-10 09-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 10-NAME:15,2NAME:~17,2.jpg
2013-06-10 11-NAME:15,2NAME:~17,2.jpg
2013-06-10 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
2013-06-12 17-NAME:15,2NAME:~17,2.jpg
答案 0 :(得分:0)
ECHO !NAME:~4,4!-!NAME:~8,2!-!NAME:~10,2! !NAME:~13,2!-!NAME:15,2!-!NAME:~17,2!.jpg >> output.txt
! ~ missing