请帮忙!
我需要使用Windows批处理脚本删除文件名的时间戳和文件编号。谢谢!提前谢谢!
OLD Filename = CAM168-NOTSET.2013.10.01.18.45.45.882.jpg
新文件名= CAM168-NOTSET.jpg
答案 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