我有一个文件夹,其中包含一些名称如下所示的文件
0003.4b3d943b8df71af248d12f8b2e7a224a
0004.1874ab60c71f0b31b580f313a3f6e777
0005.1f42bb885de0ef7fc5cd09d34dc2ba54
0006.7a32642f8c22bbeb85d6c3b5f3890a2c
0007.859c901719011d56f8b652ea071c1f8b
.
.
.
我想通过删除这些扩展名重命名这些文件,只需要file name
部分即
0003
0004
0005
0006
.
.
.
.
如何使用脚本实现此目的?
答案 0 :(得分:4)
如果要重命名文件夹中的所有文件,那么您只需要:
ren * *.
有关详细信息,请参阅How does the Windows RENAME command interpret wildcards?。
如果文件夹中还有不应重命名的文件(扩展名为“普通”的文件),则以下内容将起作用:
for /f "eol=; delims=" %%F in ('dir /b /a-d *^|findstr /r "\.................................$"') do @ren "%%F" *.
\.
匹配点,32 .
匹配扩展名的32个字符。 $
将正则表达式匹配锚定到该行的末尾。
如果要直接从命令提示符而不是批处理脚本中运行命令,请将每个%%F
更改为%F
。
答案 1 :(得分:3)
您要寻找的是
for %%I in (d:\temp\*) DO ren "%%I" "%%~nI"
其中d:\temp
是您要重命名的文件的位置。请注意,您的批处理文件必须位于不同的文件夹中,否则您也将重命名它。另请注意,这会将所有重命名为目标文件夹中的文件。
答案 2 :(得分:3)
试试这个:
for /f "delims=" %%i in ('dir /a-d /b') do echo ren "%%~fi" "%%~ni"
查看输出并删除echo
,如果没有问题。
答案 3 :(得分:-1)
使用类似的东西
for /f "delims=" %%A in ('dir /a:-d /b /o:n') do echo %%~nA