【发布时间】:2018-06-29 07:40:27
【问题描述】:
我有多个目录和子目录,需要删除所有文件名的日期部分并保留文件名的其余部分。
例如
输入:Dummy-Filename-V0001-01202018.txt
输出:虚拟文件名-V0001.txt
基本上,我需要删除“-01202018”部分。
注意事项:
- 它还应该涵盖其他文件格式,例如“.pdf”“.csv”等(不确定所有可用的文件类型)
- 日期可以采用不同的格式,例如 DDMMYYYY、MMDDYYYY、YYYYMMDD 或其他组合。
- 到目前为止,我只在文件名的末尾看到了日期。
- 我在 /Sample/00AA/0001/01202018/file.txt 下有最多 /5000/ 的文件,还有 /Sample/00BB/ 和子文件夹。
我目前有下面的代码,我已经能够遍历所有子目录并显示带有日期的文件,但是我尝试的重命名命令不起作用。 (见 cmets)
FOR /R "C:\Users\Dummy\Desktop\UAT\Sample\" %%G in (.) DO (
Pushd %%G
Echo now in %%G
echo before
dir
dir "*-01202018*"
REM ren *-01202018.txt *.txt
REM ren ???-01202018.txt ???.txt
REM rename 's/-01202018//' *
REM rename "*-01202018*" "*/////////*"
echo after
dir
Popd )
Echo "back home"
PAUSE
【问题讨论】:
-
我质疑您的动机,并想知道当日期戳被删除后,其中有多少名称将不再是唯一的?
-
所有文件都是唯一的,同一个文件可能出现在目录的不同日期文件夹中。哦,对不起,目录有日期文件夹。 /Sample/00AA/0001/01202018/file.txt
-
这些目录中的每个文件是否都具有相同的 -Date 后缀,或者其中一些没有日期?其中是否有多个连字符或多个句点?
-
有些没有日期,有些有日期,日期格式不同,如上所示。没有日期的不需要触摸。
-
是的,连字符、句号和下划线(我没有注意到任何其他特殊字符)可能会或可能不会出现在文件名上。
标签: batch-file design-patterns rename