如何根据名称和基名在文件夹之间移动文件

时间:2018-10-08 10:54:45

标签: powershell

我正在尝试将具有相同基本名称的文件从失败的文件夹移至正确的文件夹。目前的代码是将FailedDocs文件夹移至GoodDocs,但我只希望其中的文件。

以下示例文件;

  • test.pdf(名称)
  • test.pdf.xml(基本名称)

当test.pdf.xml(使用基本名时变为test.pdf)且等于好文件夹中的test.pdf时要移动的文件。

$sourceFiles = @("C:\Temp\FailedDocs")
$destinationFiles = @("C:\Temp\GoodDocs")

function Perform-File-Move {
    for ($i = 0; $i -lt $sourceFiles.Count; $i++) {
        Get-ChildItem $($sourceFiles[$i]) -Recurse | Where-Object {
            $destinationFiles.Name -eq $sourceFiles.BaseName
        } | ForEach-Object {
            if ($destinationFiles.Name -eq $sourceFiles.BaseName) {
                Move-Item -Path $($sourceFiles[$i]) -Destination
                $($destinationFiles[$i]) -Force
            } else {
                Write-Host "Nothing to Move"
            }
        }
    }
}

Perform-File-Move

1 个答案:

答案 0 :(得分:0)

我想将基于基名称匹配名称将文件从源文件夹移动到目标文件夹的答案发布出来。

$sourceFiles = "C:\Temp\FailedDocs"
$destinationFiles = "C:\Temp\GoodDocs"


function Perform-Compare-And-Move{
   foreach ($XmlFileName in @(Get-ChildItem -Path $sourceFiles)){
   :outer
   foreach ($PdfFileName in @(Get-ChildItem -Path $destinationFiles -Filter *.pdf)){
       if ($XmlFileName.BaseName -eq $PdfFileName) {
       Move-Item  -Path $sourceFiles\$XmlFileName -Destination $destinationFiles -force
       break :outer
       }
       else{}
      }
   }
}

Perform-Compare-And-Move