批量处理文件名,只改文件中的部分名称
我想去掉的部分是: "ic_", 如果有其他要求,也可以。
@echo off&setlocal EnableDelayedExpansion
color 0a
echo %date% %time%
echo rename file now......
set a=1
for /f "delims=" %%i in ('dir /b *.xml') do (
set "str=%%~nxi"
set "shortstr=!str:~3!"
set "replacestr=!shortstr:_=-!"
echo !replacestr!
ren "%%i" "!replacestr!"
set /a a+=1
)
)
set /a a-=1
echo rename finish,rename count:%a%。
pause
说明一下:
可以看到,我是从第三位开始保留的,如果想从第三位保留到第7位,可以替换成 set "shortstr=!str:~3,7!"
这样改完后,后面的文件名称后缀要手动加上了。 ren "%%i" "!replacestr!.xml"
@echo off&setlocal EnableDelayedExpansion
color 0a
echo %date% %time%
echo rename file now......
set a=1
for /f "delims=" %%i in ('dir /b *.文件后缀') do (
set "str=%%~nxi"
set "shortstr=!str:~0!" //这里~表示从第几位开始截取名称,~3表示从第三位开始截取 ~3,7表示从第三位截取到第七位
set "replacestr=!shortstr:-=_!" //这里是将 - 改成了 _
echo !replacestr!
ren "%%i" "!replacestr!"
set /a a+=1
)
)
set /a a-=1
echo rename finish,rename count:%a%。
pause
还有一个文件名字符串替换的方法
@echo off
title replace Name
echo click repace
echo.
echo.
echo 正在替换文件(文件夹)名……
for /f "delims=" %%a in ('dir /s /b ^|sort /+65535') do (
if "%%~nxa" neq "%~nx0" (
set "file=%%a"
set "name=%%~na"
set "extension=%%~xa"
call set "name=%%name:%被替换的字符串不要加引号%要替换成的字符串%_%%%"
setlocal enabledelayedexpansion
ren "!file!" "!name!!extension!" 2>nul
endlocal
)
)
echo 完成
pause
照搬这个兄弟的:
https://blog.csdn.net/zzq900503/article/details/49099467