如何在CMD中批量重命名文件,将经纬度值保留两位小数?
在CMD中批量重命名文件保留两位小数的方案
在CMD环境下处理这类批量重命名,你可以用内置的批处理命令结合字符串操作,或者用更灵活的PowerShell(毕竟CMD的数值处理能力有限)。下面给你两种适配不同场景的方案:
方案一:纯CMD批处理(适用于固定三位小数的原文件名)
如果你的所有目标文件都像例子那样,纬度和经度都是三位小数(比如30.880),那么可以直接通过字符串截取去掉最后一位数字来得到两位小数格式。
- 打开CMD,导航到文件所在的目录(用
cd 你的文件路径命令) - 复制粘贴以下批处理代码并执行:
@echo off setlocal enabledelayedexpansion :: 遍历所有符合fluxes_*_*格式的文件 for %%f in (fluxes_*_*) do ( :: 获取不带扩展名的文件名 set "fname=%%~nf" :: 用下划线分割文件名成三个部分:前缀、纬度、经度 for /f "tokens=1,2,3 delims=_" %%a in ("!fname!") do ( :: 截取纬度的前n位(去掉最后一个字符) set "lat=%%b" set "lat=!lat:~0,-1!" :: 同理处理经度 set "lon=%%c" set "lon=!lon:~0,-1!" :: 拼接新文件名(保留原扩展名) set "newfname=%%a_!lat!_!lon!%%~xf" :: 执行重命名 ren "%%f" "!newfname!" ) ) endlocal echo 重命名完成!
注意:这个脚本仅适用于原纬度/经度是三位小数的情况,如果原数值小数位数不同,会导致截取错误。
方案二:PowerShell(通用方案,支持四舍五入)
如果你的文件名里的纬度/经度小数位数不固定,或者需要四舍五入保留两位小数(比如30.885变成30.89),PowerShell会是更合适的选择,它的数值处理能力更强。
- 打开PowerShell,导航到文件所在目录(用
cd 你的文件路径命令) - 复制粘贴以下代码并执行:
Get-ChildItem -Name "fluxes_*_*" | ForEach-Object { # 用下划线分割文件名 $parts = $_ -split '_' # 将纬度和经度转换为数值类型 $latitude = [double]$parts[1] $longitude = [double]$parts[2] # 格式化为两位小数,拼接新文件名(保留原扩展名) $newFileName = "fluxes_{0:N2}_{1:N2}$($_.Extension)" -f $latitude, $longitude # 移除可能的千分位空格(纬度经度不会超过100,实际不会出现,但做个保险) $newFileName = $newFileName -replace ' ', '' # 执行重命名 Rename-Item -Path $_ -NewName $newFileName } Write-Host "重命名完成!"
优势:不管原数值是几位小数,都会自动格式化为两位小数,并且支持四舍五入,适配更多场景。
通用注意事项
- 建议先备份文件再执行脚本,避免误操作导致文件丢失或命名错误
- 如果文件名包含特殊字符(比如空格、非ASCII字符),可能需要调整脚本,但你的例子格式不会有问题
内容的提问来源于stack exchange,提问作者lsr729
相关产品推荐
相关产品推荐

