我有一个文件夹,里面的文件名称相似,比如其中一个文件名为“(15.02.22 11-55-45 - timeshift 145,544 s)News(TVP Wilno HD).ts”,在这个案例中,我在2022年2月15日11:55:45点,订购了一个早145,544秒开始的节目进行保存,我想把录制请求的日期和时间更改为我订购保存的节目的播放日期和时间,并对文件夹中的每个文件都做同样的操作,我试着用这个脚本来做到这一点:
$folderPath = "D:\test"
$files = Get-ChildItem -Path $folderPath -Filter "*.ts"
foreach ($file in $files)
{
$fileName = $file.Name
$startTimeSeconds = $fileName.Substring($fileName.IndexOf("timeshift") + 10, 6)
$startTime = [datetime]::ParseExact($fileName.Substring(1, 18), "dd.MM.yy HH-mm-ss", $null)
$startTime = $startTime.AddSeconds(-$startTimeSeconds)
$newFileName = "(" + $startTime.ToString("dd.MM.yy HH-mm-ss") + ") " + $fileName.Substring($fileName.IndexOf(")") + 2)
Rename-Item $file.FullName -NewName $newFilename
}
使用时显示以下错误:
Exception calling "ParseExact" with "3" argument(s): "Ciąg nie został rozpoznany jako prawidłowy element DateTime."
At line:7 char:5
+ $startTime = [datetime]::ParseExact($fileName.Substring(1, 18), " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FormatException
Method invocation failed because [System.Object[]] does not contain a method named 'AddSeconds'.
At line:8 char:5
+ $startTime = $startTime.AddSeconds(-$startTimeSeconds)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Cannot find an overload for "ToString" and the argument count: "1".
At line:9 char:5
+ $newFileName = "(" + $startTime.ToString("dd.MM.yy HH-mm-ss") + " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
将文件名替换为“()Wiadomosci(TVP Wilno HD).ts”。
我应该使用什么脚本将录制请求的日期和时间更改为我订购保存的节目的播放日期和时间,并对文件夹中的每个文件执行相同的操作?上述文件的结果名称应该是“(13.02.22 19-30-00)Wiadomosci(TVP Wilno HD).ts”。
1条答案
按热度按时间6rqinv9w1#
子字符串操作有问题。如果文件名是“(15.02.22 11-55-45 -时移145544秒)新闻(TVP Wilno HD).ts”您需要子字符串(1,17),而不是1,18。第一个参数是子字符串最左边字符的位置,从0开始。第二个是长度,而不是你可能想过的最右边字符的位置,在这种情况下是17。