代码之家  ›  专栏  ›  技术社区  ›  Garrett

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

  •  0
  • Garrett  · 技术社区  · 8 年前

    我有一个重命名脚本,有一小部分给我带来了问题。我需要将jpg文件名的一部分重命名为与文件路径分离的文件名。

    文件示例:

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

    在上述情况下,我想重命名 01_img_0029.JPG WK44006679_0029.JPG ,因此将文件名的字符串0,1替换为文件路径的-3。

    我可以派生出我想要的名称的两部分,但我在实际重命名逻辑方面遇到了问题。以下分离菌株“WK44006679”和第二个菌株“0029”:

    $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 回复  |  直到 8 年前
        1
  •  1
  •   Jordan Regan    8 年前

    像这样的怎么样?

    $splitPath = ("C:\WK53\WK5330002\WK44006679\spin1\01_img_0029.JPG").Split("\\")
    
    $newName = $splitPath[3] + ($splitPath[-1][2..($splitPath[-1].Length - 1)] -join "")
    
        2
  •  1
  •   KVB    8 年前

    对Jordan Regan的最后一个建议进行了微小更改。

    $splitPath = ("C:\WK53\WK5330002\WK44006679\spin1\01_img_0029.JPG").Split("\\")
    
    $YoMammy = -Join($splitPath[3],'_',$(($splitPath[-1]).split('_')[-1]))
    
    推荐文章