PowerShell Move-Item - 不移动文件

时间:2013-04-10 17:57:10

标签: windows powershell

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

  1. 循环并抓取与定义的模式匹配的所有文件
  2. 将这些文件复制到其他位置
  3. 将原始源文件移动到另一个位置(如果复制成功)
  4. 它正在执行步骤#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"
    
        }
      }
    }
    

2 个答案:

答案 0 :(得分:0)

尝试使用-force选项。

答案 1 :(得分:0)

Move-Item $source_move$sourcefile $source_move正在将$sourcefile目录中的$source_move移动到$source_move目录,该目录不执行任何操作。我猜你打算做Move-Item $source$sourcefile $source_moveMove-Item $src $source_move

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