powershell - 如何在powershell中的-Newname中包含变量
问题描述
通过 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
解决方案
您自己的答案是有效的,但在两个方面很尴尬:
它通过运算符将可扩展字符串(内部字符串插值
"..."
)与基于模板的字符串格式-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++
是一种务实的选择,但不如上述解决方案灵活 - 请参阅链接的答案。
推荐阅读
- css - CSS过渡 - 消失并再次出现
- python - SplashRequest 给出 - TypeError: attrs() got an unexpected keyword argument 'eq'
- java - 访问root应用支持macos java
- python - 在 Python 中循环遍历列表不会返回预期的 True 或 False 值
- neo4j - MATCH 基于公共节点属性的总和
- laravel - 给定 [] 邮箱中的地址不符合 RFC 2822, 3.6.2。拉拉维尔
- mongodb - db.createView() 通过匹配和比较 mongodb 中的两个表
- nativescript - 允许在 webview Nativescript-vue 中全屏播放视频
- c - 在 do while 循环中出现“预期表达式”错误
- android - 只需要为移动设备设置纵向