PowerShell批量重命名文件:去前缀0加_16后格式异常求助
解决PowerShell重命名文件时扩展名异常问题
你的问题出在直接对包含扩展名的完整文件名($_.Name)进行操作,导致_16被追加到了扩展名后面。正确的做法是分离文件名主体(不含扩展名)和扩展名,分别处理后再拼接。
修改后的脚本如下:
$files = Get-ChildItem -File -Filter 0* $files | Rename-Item -NewName { # 提取文件名主体,去除前缀0后添加_16 $processedName = $_.BaseName.TrimStart('0') + "_16" # 拼接处理后的文件名和原扩展名 $processedName + $_.Extension }
关键说明:
$_.BaseName:获取文件的主体名称(不含扩展名,比如000145.jpg的BaseName是000145)$_.Extension:获取文件的扩展名(比如.jpg)- 先对BaseName处理前缀0并添加
_16,再和原扩展名拼接,就能得到145_16.jpg、29_16.jpg这类符合预期的文件名。
如果遇到文件名主体全是0的情况(比如0000.jpg),TrimStart('0')会得到空字符串,这时候可以加个判断确保文件名合法:
$files = Get-ChildItem -File -Filter 0* $files | Rename-Item -NewName { $trimmedName = $_.BaseName.TrimStart('0') $processedName = if ($trimmedName -eq '') { '0_16' } else { $trimmedName + "_16" } $processedName + $_.Extension }
内容的提问来源于stack exchange,提问作者The Freelancer
相关产品推荐
相关产品推荐

