2011-07-05 38 views
6

我很努力使這個簡單的PowerShell腳本能夠正常工作。我用Google搜索了一下,但是我找不到答案。使用PowerShell匹配文件名和副本

正如您所看到的,我指定了源和目標位置。

$ filedate變量正在執行dateadd以獲得昨天的日期,因爲文件名包含日期。

$ filter變量具有我正在搜索的字符串,包括日期部分。

Get-ChildItem命令獨立工作,但是當我應用過濾器時,它不返回任何內容。我錯過了什麼讓這個工作?

$source = "C:\MSSQL.1\Backup\" 
$destination = "D:\MSSQL.2\Backup\" 
$filedate = (get-date).AddDays(-1).tostring('yyyyMMdd') 
$filter = "FULL_(local)_Product_" + $filedate + "*" 
Get-ChildItem -Path $source -filter $filter | Copy-Item -Destination $destination 
+0

最簡單的結論是,該過濾器不匹配。你可以編輯你的問題來添加以下內容:$ filter字符串實際上等於什麼,以及它應該匹配的其中一個文件的名稱。 –

+0

適合我。你會得到什麼:gci $ source「FULL_(local)_Product_ *」 –

回答

13

嘗試使用Where-Object cmdlet-match運營商過濾的文件列表:

$source = "C:\MSSQL.1\Backup\" 
$destination = "D:\MSSQL.2\Backup\" 
$filedate = (Get-Date).AddDays(-1).ToString("yyyyMMdd") 
$filter = "FULL_(local)_Product_$filedate" 
Get-ChildItem -Path $source | Where-Object { $_.Name -match $filter } | Copy-Item -Destination $destination 

如果你還沒有得到任何結果,那麼我們需要看看過濾器本身。

相關資源:

+0

這個作品 - 非常感謝 – mealies

+0

|複製項目 - 目標$目標 –