2016-01-06 68 views
1

我想搜索特定源文件夾中的字符串。 如果我找到具有該名稱的.xml文件,我想將該文件複製到特定的目標目錄中。 這是我到目前爲止有:如何在特定文件夾中使用powershell數組搜索xml文件

$SourceDirectory = "D:\MessageQueue_Backup\DPGIN_Backup\ETIMS" 
$DestinationDirectory = "C:\Destination" 

$orderNumberArray = "1F-16CG-2-94JG-60-2.R6C3.20864", 
"1F-16CG-2-28JG-10-2.R3C4.21488", 
"1F-16CJ-2-75JG-00-21.R4C2.21487", 
"1F-16CG-2-70JG-10-41.R5C3.21586", 
"1F-16CG-2-32JG-90-1.R2C2.22733", 
"1F-16CG-2-33JG-00-1.R5C4.23044", 
"1F-16CG-2-80JG-10-11.R5C4.22660", 
"1F-16CG-2-94JG-10-2.R7C3.23046", 
"1F-16CG-2-94JG-60-6.R10C7.23031", 
"1F-16CJ-2-24JG-30-1.R3C1.23036", 
"1F-16CJ-2-28JG-40-1.R4C3.22737", 
"1F-16CJ-2-32JG-40-1.R7C3.22728", 
"1F-16CJ-2-32JG-90-1.R2C2.22734", 
"1F-16CJ-6-11.R14C5.24295", 
"1F-16CJ-2-34JG-50-1.R6C7.2,5266" 

foreach ($element in $orderNumberArray) 
{ 

    If (Get-ChildItem $_.FullName | Select-String -Pattern $element) 
    { 
     Copy-Item $file.FullName -Destination $DestinationDirectory 
    } 

} 

我的問題是,我不知道如何尋找SourceDirectory :( 順便說一下,也有SourceFolder

+0

「搜索」是什麼意思?您是否正在尋找具有其*名稱*或其內容*中的訂單號碼之一的文件? –

+0

我需要找到並複製所有名稱以數組中提供的字符串結尾的XML文件 – Angelina

回答

1

所以這樣mething應該工作:

$sourceDirectory  = "D:\MessageQueue_Backup\DPGIN_Backup\ETIMS" 
$destinationDirectory = "C:\Destination" 

$orderNumbers = "1F-16CG-2-94JG-60-2.R6C3.20864", 
       "1F-16CG-2-28JG-10-2.R3C4.21488", 
       "1F-16CJ-2-75JG-00-21.R4C2.21487", 
       "1F-16CG-2-70JG-10-41.R5C3.21586", 
       "1F-16CG-2-32JG-90-1.R2C2.22733", 
       "1F-16CG-2-33JG-00-1.R5C4.23044", 
       "1F-16CG-2-80JG-10-11.R5C4.22660", 
       "1F-16CG-2-94JG-10-2.R7C3.23046", 
       "1F-16CG-2-94JG-60-6.R10C7.23031", 
       "1F-16CJ-2-24JG-30-1.R3C1.23036", 
       "1F-16CJ-2-28JG-40-1.R4C3.22737", 
       "1F-16CJ-2-32JG-40-1.R7C3.22728", 
       "1F-16CJ-2-32JG-90-1.R2C2.22734", 
       "1F-16CJ-6-11.R14C5.24295", 
       "1F-16CJ-2-34JG-50-1.R6C7.2,5266" 

Get-ChildItem $sourceDirectory -Filter *.xml | Where-Object { 
    $basename = $_.BaseName 
    $orderNumbers | Where-Object { $basename -like "*$_" } 
} | Copy-Item -Destination $destinationDirectory 

濾波器檢查每個文件的基本名稱(沒有擴展的文件名)與任何的順序號(-like "*$_")的結束。

1

只有XML文件這可能工作

$SourceDirectory = 'D:\MessageQueue_Backup\DPGIN_Backup\ETIMS\*' 
$DestinationDirectory = "C:\Destination" 

$orderNumberArray = @(
    "*1F-16CG-2-94JG-60-2.R6C3.20864*", 
    "*1F-16CG-2-28JG-10-2.R3C4.21488*", 
    "*1F-16CJ-2-75JG-00-21.R4C2.21487*", 
    "*1F-16CG-2-70JG-10-41.R5C3.21586*", 
    "*1F-16CG-2-32JG-90-1.R2C2.22733*", 
    "*1F-16CG-2-33JG-00-1.R5C4.23044*", 
    "*1F-16CG-2-80JG-10-11.R5C4.22660*", 
    "*1F-16CG-2-94JG-10-2.R7C3.23046*", 
    "*1F-16CG-2-94JG-60-6.R10C7.23031*", 
    "*1F-16CJ-2-24JG-30-1.R3C1.23036*", 
    "*1F-16CJ-2-28JG-40-1.R4C3.22737*", 
    "*1F-16CJ-2-32JG-40-1.R7C3.22728*", 
    "*1F-16CJ-2-32JG-90-1.R2C2.22734*", 
    "*1F-16CJ-6-11.R14C5.24295*", 
    "*1F-16CJ-2-34JG-50-1.R6C7.2,5266*" 
) 

dir $SourceDirectory -Include $orderNumberArray | % {copy $_.fullname $destinationdirectory} 
+0

這不工作:( – Angelina

1

嘗試這樣的事情

$Include = @('1F-16CG-2', '1F-16CG-2') 
gci -Path D:\MessageQueue_Backup\DPGIN_Backup\ETIMS | ForEach-Object ($_) { 
    for($i = 0; $i -lt $Include.Count; $i++){ 
     if($_.Name.StartsWith($Include[$i])){ 
      Write-Warning $_.Name 
     } 
    } 
} 
相關問題