2013-04-10 22 views
1

我有一个脚本(粘贴以下)这是应该做到以下几点:匹配定义的模式是 PowerShell的布展项目 - 不移动文件

  • 复制这些文件到另一个

    1. 循环并抓住所有文件位置
    2. 原始的源文件移动到另一个位置(如果复制成功)

    它做的步骤#1和#2,但步骤#3,布展项目是不动的任何文件,我不知道为什么,我没有得到ind错误代码

    有人可以帮忙吗?谢谢

    $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" 
    
        } 
        } 
    } 
    
  • 回答

    0

    请尝试使用-force选项。

    0

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

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