使用Powershell从文件路径和名称拆分变量重命名多个文件

时间:2018-01-04 20:51:10

标签: powershell

我有一个重命名脚本,一小部分让我遇到问题。我需要使用文件路径中的分割重命名jpg文件名的一部分。

文件示例:

"C:\WK53\WK5330002\WK44006679\spin1\01_img_0029.JPG"

在上面的例子中,我想将01_img_0029.JPG重命名为WK44006679_0029.JPG,所以将文件名的字符串0,1替换为文件路径的-3。

我可以推导出我想要的名称的两个部分,但我遇到了实际重命名逻辑的问题。以下拆分隔离' WK44006679'和第二个分离物'''

$jpgToRename = GCI -Path $pathToRename -Filter '*.jpg' -R | ForEach-Object{
$newJpgASIN = $jpg.FullName.split('\')[-3]
$oldJpgName = $jpg.Name.split('_')[2]
}

我试了这个没有运气:

$jpgToRename = GCI -Path $pathToRename -Filter '*.jpg' -R | ForEach-Object{
$newJpgASIN = $jpg.FullName.split('\')[-3]
$oldJpgName = $jpg.Name.split('_')[2]
Rename-Item -NewName {$_.Name -replace $oldJpgName,'_'+$newJpgASIN}
}

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

$splitPath = ("C:\WK53\WK5330002\WK44006679\spin1\01_img_0029.JPG").Split("\\")

$newName = $splitPath[3] + ($splitPath[-1][2..($splitPath[-1].Length - 1)] -join "")

答案 1 :(得分:1)

对Jordan Regan的最后建议进行了微小的改动。

$splitPath = ("C:\WK53\WK5330002\WK44006679\spin1\01_img_0029.JPG").Split("\\")

$YoMammy = -Join($splitPath[3],'_',$(($splitPath[-1]).split('_')[-1]))