当从通话录音网站下载.mp3文件时,它们不是我们想要的格式。我想替换整个文件名并将文件移动到新文件夹中。默认格式为:
incoming#_outgoing#_yyyymmdd_hhmmss
我有一个搜索和替换CSV,它使用来自通话录音网站的数据:
替换:电话呼叫参考(TelCall_yyyymmdd_Surname)
搜索:来自通话录音软件的确切通话时间(yyyymmdd_hhmmss)
我编写了一个脚本,在文件名中搜索确切的时间和日期,并用所需的格式替换它:
$folder = "C:\Users\R\Desktop\ClientCallsTest"
$csv = "C:\Users\R\Desktop\20180104-0224_Client_Calls_PS_CSV.csv"
$keywords = @{}
Import-Csv $csv | ForEach-Object {
$keywords[$_.Search] = $_.Replace
}
Get-ChildItem $folder -Recurse | ForEach-Object {
$newname = $_.Name
foreach ($word in $keywords.Keys) {
$newname = $newname.Replace($word, $keywords[$word])
}
if ($_.Name -ne $newname) {
Rename-Item -Path $_.FullName -NewName $newname
}
}
它确实重命名了文件,但只替换了CSV表中的字符串。我想要的格式只是TelCall_yyyymmdd_Surname。
如何修改此代码以替换整个文件名(删除开头的传入/传出号码),而不仅仅是查找表中的字符串?我确定这是一个快速的改变,但我很难过。
答案 0 :(得分:1)
您可以使用字符串Split()
功能将原始名称拆分为多个部分,例如:
$nameParts = "incoming#_outgoing#_yyyymmdd_hhmmss" -split "_"
将为您提供如下数组:
PS C:\>$nameParts
incoming#
outgoing#
yyyymmdd
hhmmss
然后你可以组装你现在的字符串,如:
$newName = "TelCal_" + $nameParts[2] + "_" + $surename
其中$surename
包含来自csv文件的数据