2013-04-10 3 views
1

У меня есть скрипт (вставленный ниже), которые, как предполагается сделать следующее:PowerShell Move-Item - Не Перемещение файлов

  1. Loops и захватывает все файлы, которые соответствуют заданному образцу
  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" 

    } 
    } 
} 

ответ

0

Линия Move-Item $source_move$sourcefile $source_move перемещает $sourcefile в каталог $source_move в каталог $source_move, который ничего не делает. Я предполагаю, что вы хотели сделать Move-Item $source$sourcefile $source_move, или Move-Item $src $source_move.

Кроме того, echo - это просто псевдоним для Write-Output, который возвращает аргумент вызывающему. Вы можете добиться того же результата без эха (любой объект будет возвращен). Или, если вы намеревались использовать их в качестве отладочных инструкций, вы можете использовать Write-Debug или Write-Host.

Смежные вопросы