如何在 PowerShell 5.1 中重命名文件(并移动它们)?

How to rename files(and move them) in PowerShell 5.1?

我是 PowerShell 的新手,我被困在一些非常简单的事情上。我在谷歌上搜索了很多并走到了这一步,但似乎无法解决这个问题。我正在尝试从一台服务器到另一台服务器进行简单的文件传输。 该脚本的目的是检查源文件夹中的文件是否存在于目标文件夹中,如果存在,则在文件名前加上 "Copy_" 并将文件夹的所有内容(包括重命名的文件)移动到目标文件夹。

Move-Item 有效,但它会在重命名之前移动所有内容。因此,路径或连接没有问题。

Write-Output $file returns True 正确,目标文件夹中有重复文件。 问题是:

  1. 文件重命名无效。它只是在源文件夹中添加一个名为“Copy_”的新文件。除了这个新的“Copy_”文件之外的所有文件都被移动了。
  2. 源文件夹 Get-ChildItem : Could not find item \server9\VantageAttachments_ProblemsFolder\Vantage_test\NameOfTheFile.txt. 中的每个文件都出现此错误,由第 Get-ChildItem -Force $sourcePath | ForEach-Object
  3. 行触发
$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*"
$DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak"

Get-ChildItem -Force $sourcePath | ForEach-Object {
    # Check if the file in the Source folder is in Destination folder
    $fileName = $_.Name
    $file = Test-Path -Path $DestinationPath$fileName
    Write-Output $file
    if($file){
        "\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName {"Copy_"+$_.Name};
        
    }
    Move-Item -Path $sourcePath  -Destination $DestinationPath -Force

}

提前致谢。

Copy_ 未移动,因为您在 $source 中指定文件必须具有扩展名 *.*。 尝试在 Rename-Item 中使用圆括号而不是大括号。我认为这是一个范围界定错误,因此 $_.Name 是空的。

$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*"
$DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak"

Get-ChildItem -Force $sourcePath | ForEach-Object {
    # Check if the file in the Source folder is in Destination folder
        $fileName = $_.Name
        $file = Test-Path -Path $DestinationPath$fileName
        Write-Output $file
            if($file){
                 "\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName ("Copy_"+$_.Name);
            }
           
}
Move-Item -Path $sourcePath  -Destination $DestinationPath -Force