文本文件中的增量计数器前缀

时间:2016-05-21 23:34:44

标签: powershell

我正在尝试创建一个PowerShell脚本,该脚本将扫描文件夹及其子文件夹中的视频并创建播放列表文件。

播放列表格式:

  

DAUMPLAYLIST
  1 *文件*%文件名%
  2 *文件*%文件名%
  3 *文件*%文件名%
  4 *文件*%文件名%
  ..等等

到目前为止,我的脚本成功地格式化了所有内容,除了第一个增量编号。我无法弄清楚如何编写PowerShell以在每个对象之前添加计数器前缀。

我的剧本格式。

  

DAUMPLAYLIST
  *文件*%文件名%
  *文件*%文件名%
  *文件*%文件名%
  *文件*%文件名%
  ..等等

我的剧本:

$formats = @("*.avi","*.mp4","*.flv","*.mpg","*.wmv","*.mpeg","*.mov","*.h265","*.mkv","*.asf","*.WebM","*.m4a","*.lnk","*.h264")  
$dir = Split-Path $MyInvocation.MyCommand.Path  
Add-Content 01.dpl DAUMPLAYER  
gci D:\Video\01\ -Include $formats -Recurse |
  ForEach-Object -Process { "*file*" + $_ } |
  Add-Content .\01.dpl

1 个答案:

答案 0 :(得分:0)

只需在循环中添加一个计数器:

$i = 0
Get-ChildItem 'D:\Video\01' -Include $formats -Recurse |
  ForEach-Object { "{0}*file*{1}" -f $i, $_.Name; $i++ } |
  Add-Content .\01.dpl

另一个选择是收集变量中的文件列表并使用for循环处理该列表:

$files = Get-ChildItem 'D:\Video\01' -Include $formats -Recurse
for ($i = 0; $i -lt $files.Count; $i++) {
  "{0}*file*{1}" -f $i, $files[$i].Name | Add-Content .\01.dpl
}

format operator-f)还允许您定义特定的数字格式,例如前导零({0:d3})。