Powershell 覆盖现有文件并重命名

Powershell 覆盖现有文件并重命名,powershell,Powershell,我正在尝试重命名文件Members.csv 获取子项“\”-过滤器“*成员*.csv”|其中{ $\uU4.LastWriteTime.GetDateTimeFormats()[44]-eq$今天 }|重命名项目-新名称“hello2.csv”-强制 -强制不起作用。如果hello2已经存在,则不会进行重命名 我发现这个线程说我们必须使用移动项目。但我不知道如何将它合并到我的代码中 我没有试图替换,我正在重命名整个名称,因此我不知道如何处理此部分: $NewName = $_.Name =

我正在尝试重命名文件
Members.csv

获取子项“\”-过滤器“*成员*.csv”|其中{
$\uU4.LastWriteTime.GetDateTimeFormats()[44]-eq$今天
}|重命名项目-新名称“hello2.csv”-强制
-强制
不起作用。如果hello2已经存在,则不会进行重命名

我发现这个线程说我们必须使用
移动项目
。但我不知道如何将它合并到我的代码中

我没有试图替换,我正在重命名整个名称,因此我不知道如何处理此部分:

$NewName = $_.Name = "hello2"

重命名项
-Force
参数不允许您通过重命名另一个文件来替换现有文件。从:

-强制力

强制cmdlet重命名无法更改的项目,例如隐藏或只读文件、只读别名或变量。cmdlet无法更改常量别名或变量。实现因提供商而异。有关更多信息,请参阅关于\u提供程序

您需要使用
Move Item-Force
,正如您已经发现的,它的使用方式与您在第一个代码段中尝试使用
重命名Item
的方式完全相同:

Get-ChildItem -Filter '*Members*.csv' | Where-Object {
    $_.LastWriteTime.GetDateTimeFormats()[44] -eq $today
} | Move-Item -Destination "hello2.csv" -Force
请注意,如果在
Where Object
之后有多个项目,则每个项目都将替换上一个项目,因此您将有效地删除除一个项目之外的所有项目

Get-ChildItem -Filter '*Members*.csv' | Where-Object {
    $_.LastWriteTime.GetDateTimeFormats()[44] -eq $today
} | Move-Item -Destination "hello2.csv" -Force