1

通过 power-shell 脚本,尝试将 $Album 变量添加到命名序列中。

尝试写入主机,变量正在工作。尝试过 () [] {} "" '' 之类的东西。等等。

目标是 $Album 在下面的这一行中开始工作: {0:D2}$Album.mxf

$i = 1

    $Artist = " Name"
    $Type = "Type"
    $Location = "Loc"
    $Month = "Month"
    $Year = "2019"
    $Album = "$Artist $Type $Location $Month $Year"

# Write-Host -ForegroundColor Green -Object $Album;

Get-ChildItem *.mxf | %{Rename-Item $_ -NewName ('{0:D2}$Album.mxf' -f $i++)}

前:

  • 杂项名称 - 1.mxf
  • 杂项名称 - 4.mxf
  • 杂项名称 - 6.mxf

当前的:

  • 01$专辑.mxf
  • 02$专辑.mxf
  • 03$专辑.mxf

目标:

  • 01 名称类型 Loc 月份 2019.mxf
  • 02 名称类型 Loc 月份 2019.mxf
  • 03 名称类型 Loc 月份 2019.mxf
4

3 回答 3

0

您自己的答案是有效的,但在两个方面很尴尬:

  • 它通过运算符将可扩展字符串(内部字符串插值"...")与基于模板的字符串格式-f混合。

  • 它使用%( ForEach-Object)Rename-Item每个输入对象启动,这是非常低效的。

这是一个提供补救措施的解决方案,通过-f一致使用和使用延迟绑定脚本块

$Artist = " Name"
$Type = "Type"
$Location = "Loc"
$Month = "Month"
$Year = "2019"
$Album = "$Artist $Type $Location $Month $Year"

$i = 1
Get-ChildItem *.mxf |
  Rename-Item -NewName { '{0:D2} {1}.mxf' -f ([ref] $i).Value++, $Album }

请注意使用([ref] $i).Value++来增加 的值$i,这是必要的,因为传递给的延迟绑定脚本块-NewName子范围内运行- 有关详细信息,请参阅此答案

请注意,这$script:i++是一种务实的选择,但不如上述解决方案灵活 - 请参阅链接的答案。

于 2019-06-30T19:40:24.520 回答
0

或者像这样(在交互式会话和脚本中都有效)。并且你想要一个空间之前$album

Get-ChildItem *.mxf | Rename-Item -NewName { "{0:D2} $Album.mxf" -f $script:i++ }

编辑:还有另一种方法。鲜为人知的是 foreach-object 可以占用 3 个脚本块(开始/处理/结束)。-process 可以采用文档中的脚本块数组。你总是可以用 -whatif 来测试这些东西。

Get-ChildItem *.mxf | 
foreach { $i = 1 } { Rename-Item $_ -NewName ("{0:D2} $Album.mxf" -f $i++) -whatif }  
于 2019-06-30T14:43:18.670 回答
0

@Theo在评论中回答

  • 在这里使用双引号,"{0:D2}$Album.mxf"以便变量 $Album 得到扩展。
$i = 1

    $Artist = " Name"
    $Type = "Type"
    $Location = "Loc"
    $Month = "Month"
    $Year = "2019"
    $Album = "$Artist $Type $Location $Month $Year"

# Write-Host -ForegroundColor Green -Object $Album;

Get-ChildItem *.mxf | %{Rename-Item $_ -NewName ("{0:D2}$Album.mxf" -f $i++)}

前:

  • 杂项名称 - 1.mxf
  • 杂项名称 - 4.mxf
  • 杂项名称 - 6.mxf

后:

  • 01 名称类型 Loc 月份 2019.mxf
  • 02 名称类型 Loc 月份 2019.mxf
  • 03 名称类型 Loc 月份 2019.mxf
于 2019-06-30T08:06:49.343 回答