【问题标题】:Renaming multiple files with variables split from file path and name via Powershell通过Powershell从文件路径和名称中拆分变量重命名多个文件
【发布时间】:2018-01-04 20:51:10
【问题描述】:

我有一个重命名脚本,其中一小部分导致了我的问题。我需要重命名 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}
}

感谢任何帮助。谢谢!

【问题讨论】:

  • Rename-Item -NewName {$_.Name -replace $oldJpgName,'_'+$newJpgASIN} -> Rename-Item $_.FullName -NewName ($_.Name -replace $oldJpgName, ('_'+$newJpgASIN))

标签: powershell


【解决方案1】:

这样的事情呢?

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

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

【讨论】:

  • 如何通过这个传递目录中的每个 jpg?我没有看到实际更改名称的 cmdlet。
  • 好的我现在明白了,对于其他用户:使用我上面的代码,包括 get-childitem 位,并将 Foreach-Object 替换为 'Foreach($jpg in $jpgToRename){} 并替换 $ newJpgASIN 和 $oldJpgName 与上述变量并使用 'Rename-Item $jpg.FullName -NewName $newName'
【解决方案2】:

对 Jordan Regan 的最后一条建议稍作改动。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2018-09-29
    • 1970-01-01
    • 2015-09-05
    • 2020-08-22
    • 1970-01-01
    • 2019-11-13
    • 2017-04-10
    相关资源
    最近更新 更多