1

我有一个脚本(粘贴在下面)应该执行以下操作:

  1. 循环并抓取与定义的模式匹配的所有文件
  2. 将这些文件复制到另一个位置
  3. 将原始源文件移动到另一个位置(如果复制成功)

它正在执行第 1 步和第 2 步,但第 3 步,Move-Item 没有移动任何文件,我不知道为什么,也没有任何错误迹象

有人可以帮忙吗?谢谢

$source = "C:\Users\Tom\"
$source_move = "C:\Users\Tom\OldLogBackup1\"
$destination ="C:\Users\Tom\Mirror\"

if(-not(Test-Path $destination)){mkdir $destination | out-null}


ForEach ($sourcefile In $(Get-ChildItem $source | Where-Object { $_.Name -match "Daily_Reviews\[\d\d\d\d-\d\d\d\d\].journal" }))
{
    #escape filename because there are brackets in the name!
$src = [Management.Automation.WildcardPattern]::Escape($sourcefile)
Copy-Item  $src $destination

### Check for a successful file copy
if($?)
{

    #### 
    if(-not(Test-Path $source_move)){
        echo "Path does not exist!"
    } else { 
        echo "Path exists!"

        ### Move original source file someplace else
        Move-Item $source_move$sourcefile $source_move
        if($?)
        {
            echo "Source file successfully moved"

        } else {

            echo "Source file was not successfully moved"

    }
  }
}
4

2 回答 2

0

该行Move-Item $source_move$sourcefile $source_move正在将目录中的 移动到目录中,该$sourcefile目录什么也不做。我猜你打算这样做,或者。$source_move$source_moveMove-Item $source$sourcefile $source_moveMove-Item $src $source_move

此外,echo只是一个别名Write-Output,它将参数返回给调用者。您可以在没有回声的情况下获得相同的结果(将返回任何单独的对象)。或者,如果您打算将这些用作调试语句,您可以使用Write-Debugor Write-Host

于 2013-04-14T15:17:25.163 回答
0

尝试使用该-force选项。

于 2013-04-10T18:05:15.030 回答