用于删除文件名部分的批处理脚本

时间:2013-10-03 00:26:40

标签: batch-file file-rename windows-scripting batch-rename

请帮忙!

我需要使用Windows批处理脚本删除文件名的时间戳和文件编号。谢谢!提前谢谢!

OLD Filename = CAM168-NOTSET.2013.10.01.18.45.45.882.jpg

新文件名= CAM168-NOTSET.jpg

3 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL
SET "fname=CAM168-NOTSET.2013.10.01.18.45.45.882.jpg"
FOR %%i IN ("%fname%") DO FOR /f "delims=." %%j IN ("%%i") DO ECHO REN "%%~i" "%%~j%%~xi"
GOTO :EOF

新名称只是ECHO ed。

答案 1 :(得分:1)

如果通过“删除时间戳和文件编号”,则表示删除第一个和最后一个点之间的所有内容,保留扩展名,然后您不需要批处理脚本。只需一个衬垫即可。

此命令将重命名当前目录中的所有.jpg文件。它将支持最长为50的最终名称,不包括日期,数字和扩展名。如果名称较长,请添加其他?;如果名称较短,则可以删除一些?

for %F in (*.jpg) do @ren "%F" "??????????????????????????????????????????????????%~xF"

如果在批处理文件中使用该命令,则加倍百分比。

您可以在in ()子句中放置任何文件掩码或文件列表等。

如果您只是要重命名.jpg文件,那么您只需使用:

ren *.jpg ??????????????????????????????????????????????????.jpg

有关其工作原理的信息,请参阅How does the Windows RENAME command interpret wildcards?


劳埃德有一个有趣的解决方案,只会重命名与模板相匹配的文件 name.number.[number.]...ext,表示为正则表达式。但它需要安装第三方可执行文件。使用hybrid JScript/batch utility called REPL.BAT的纯脚本可以轻松实现相同的特异性。

假设REPL.BAT位于当前目录中,或者更好,位于PATH中的某个位置,则以下内容将匹配与正则表达式模板匹配的所有文件:

for /f "eol=* delims=* tokens=1,2" %A in (`dir /b /a-d^|repl "(.*?)(\.\d+)+(\.\w+) a" "$&*$1$3"') do ren "%A" "%B"

如果在批处理脚本中使用,则加倍百分比。

答案 2 :(得分:1)

使用renamer(跨平台文件重命名器)和这些输入文件:

CAM168-NOTSET.2013.10.01.18.45.45.882.jpg
CAM169-NOTSET.2013.10.01.18.45.45.883.gif
CAM170-NOTSET.2013.10.01.18.45.45.883.jpeg

和这个命令:

$ renamer --find '/(.*?)(\.\d+)+(\.\w+)/' --replace '$1$3' *

生成这些文件名:

CAM168-NOTSET.jpg
CAM169-NOTSET.gif
CAM170-NOTSET.jpeg