batch-file - 批量重命名文件,同时保留部分 rar 编号
问题描述
就像标题一样,我想批量重命名文件,但保留 rar 文件的一部分。
例子:
- File-01.part1.rar
- File-01.part2.rar
输出:
- 新文件__01.part1.rar
- 新文件__01.part2.rar
下面是代码的重命名部分。
SETLOCAL EnableDelayedExpansion
REM Set your Year, Month, Day variable values here.
REM They will be used for file renaming.
CD "D:\test\rename"
FOR /F "usebackq tokens=* delims=" %%A IN (`DIR "*.rar" /B /A:-D`) DO (
REM Extract the last 2 chars of the file name.
SET FileName=%%~nA
SET First4=!FileName:~0,5!
SET Last2=!FileName:~-2!
REM Rename the file, inserting the new data.
RENAME "%%A" "!First4!__!Last2!%%~xA"
)
ENDLOCAL
解决方案
这是基于我对您想要做什么的假设的示例脚本:
@Echo Off
SetLocal EnableDelayedExpansion
Set "sd=D:\test\rename"
Set "xf=.rar"
If Not Exist "%sd%\*%xf%" Exit /B
CD /D "%sd%" 2>Nul || Exit /B
Set "ds="
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined ds Set "ds=%%A%%B%%C"
For %%A In ("*%xf%") Do (Set "fn=%%~nA"
For %%B In ("!fn!") Do (Set "fx=%%~xB"
If /I Not "!fx:.part=!"=="%%~xB" Set "fn=%%~nB")
Ren "%%A" "!fn:~,4!_%ds%_!fn:~-2!!fx!%xf%$")
Ren "*%xf%$" "*%xf%"
我%ds%
在两个下划线之间插入了年、月、日变量,意思是:
File-01.part1.rar
将被重命名为File_20180523_01.part1.rar
Testing18.part2.rar
将被重命名为Test_20180523_18.part2.rar
Archive02.rar
将重命名为Arch_20180523_02.rar
.
推荐阅读
- powershell - 通过 powershell 在 Azure Pipeline 中更改 csproj 文件的 AssemblyName
- amazon-web-services - 在 EKS Fargate 中,您如何标记与 Fargate 相关的成本?
- jaxb - 在 JAXB 解组时删除新行
- python - 用于在单个 PDF 中呈现多个 graphviz 图形的 Python 代码,每页一个
- regex - 正则表达式 MacAddress:排除假值
- android-studio - 找不到 kotlin 插件
- pandas - 将 15 分钟的数据重采样为 1 分钟而不进行聚合
- javascript - QuillJS 文本编辑器不工作条形图
- javascript - 在 Angular 6 中,如果路线相同,我将无法再次加载该组件
- docker - 主机重启时 Docker-Compose 失败(docker.service 比 docker 依赖的设备可用性快)