我在共享文件夹的子目录中的Synology NAS上有几个.mkv
个文件,最后附加了.partial~
个扩展名。
我正在尝试从这些文件的末尾删除.partial~
,并忽略位于.jpg
文件夹\文件结构例如:
\\ NAS \ SharedFolder \ Subdirectory1 \ Subdirectory2 \ file.mkv.partial~
\\ NAS \ SharedFolder \ Subdirectory1 \ file.mkv.partial〜
\\ NAS \ SharedFolder \ Subdirectory1 \ file.jpg
我创建了以下powershell脚本strippartialext.ps1
,该脚本在我的Windows 10 PC上从Subdirectory1或Subdirectory2中运行时正常工作:
\\ NAS \ SharedFolder \ Subdirectory1 \ strippartialext.ps1 [WORKS HERE]
\\ NAS \ SharedFolder \ Subdirectory1 \ Subdirectory2 \ strippartialext.ps1 [WORKS HERE]
它会删除下面的所有内容(以及下面的子目录)但从顶级SharedFolder位置运行时不起作用:
\\ NAS \ SharedFolder \ strippartialext.ps1 [不在这里工作]
Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName $_.Name.replace(".partial~","")}
从SharedFolder位置运行.ps1文件时出现以下错误:
重命名项目:无法重命名,因为“Microsoft.PowerShell.Core \ FileSystem :: \ NAS \ sharedfolder \ Sub Directory1 \ file.jpg”中的项目不存在。 在\ NAS \ sharedfolder \ strippartialext.ps1:1 char:36 + ...诅咒| %{Rename-Item -Path $ .PSPath -NewName $ .Name.replace(“。pa ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [Rename-Item],PSInvalidOperationException + FullyQualifiedErrorId:InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
我想知道如何从SharedFolder位置运行此文件,因为我只需要运行此脚本一次以覆盖我的所有文件,而不是在每个子目录文件夹中分别覆盖数百次。
答案 0 :(得分:0)
Rename-Item
cmdlet接受管道输入,因此我尝试:
Get-ChildItem -File -Recurse "*.partial~" |
Rename-Item -NewName {$_.Name.replace(".partial~","")} -WhatIf
如果输出看起来没问题,请删除hte -WhatIf