1

请帮忙!

我需要使用 Windows 批处理脚本从文件名中删除时间戳和文件编号。谢谢!先感谢您!

旧文件名= CAM168-NOTSET.2013.10.01.18.45.45.882.jpg

新文件名= CAM168-NOTSET.jpg

4

3 回答 3

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编辑。

于 2013-10-03T01:40:00.423 回答
1

如果通过“删除时间戳和文件号”,您的意思是删除第一个和最后一个点之间的所有内容,保留扩展名,那么您不需要批处理脚本。一个班轮就可以了。

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

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

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

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

如果您只是要重命名 .jpg 文件,那么您可以简单地使用:

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

请参阅Windows RENAME 命令如何解释通配符?有关为什么这样做的信息。


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

假设 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"

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

于 2013-10-03T02:48:03.550 回答
1

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

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
于 2013-10-03T09:46:59.863 回答