2016-06-07 65 views
0

文本和文件複製到的位置我有我們的工作秩序程序轉儲XML文件到一個目錄。我需要搜索這些文件中的特定字符串,然後根據該字符串將它們複製到另一個位置。我從另一篇文章修改了下面的代碼,雖然我沒有得到任何錯誤,但它也不起作用。我是一個腳本新手,所以任何幫助將不勝感激。搜索基於文本的PowerShell

[string] $FileDirectory = "D:\Temp"; 
[string] $OutputPath = "D:\Temp\Temp_NY"; 
[string] $OutputPath2 = "D:\Temp\TEMP_FL"; 


foreach ($FilePath in Get-ChildItem $FileDirectory | Select-Object -ExpandProperty FullName) 
{ 
[string] $Header = Get-Content $FilePath -First 0 

if ($Header -match 'PARTNER |TEST_NY') { 
    Copy-Item $FilePath $OutputPath 
} 
elseif ($Header -match 'PARTNER |TEST_FL*') { 
    Copy-Item $FilePath $OutputPath2 
} 
} 

回答

0

標題將爲-First 1(僅限第一行)。 -First 0什麼都不返回。請嘗試:

$FileDirectory = "D:\Temp"; 
$OutputPath = "D:\Temp\Temp_NY"; 
$OutputPath2 = "D:\Temp\TEMP_FL"; 

Get-ChildItem $FileDirectory | ? { !$_.PSIsContainer } | ForEach-Object { 

    $FilePath = $_.FullName 
    $Header = Get-Content $FilePath -First 1 

    if ($Header -match 'PARTNER |TEST_NY') { 
     Copy-Item $FilePath $OutputPath 
    } 
    elseif ($Header -match 'PARTNER |TEST_FL*') { 
     Copy-Item $FilePath $OutputPath2 
    } 

} 
+0

我現在收到訪問錯誤。獲取內容:對路徑「d:\ TEMP \ TEMP_FL」被拒絕。 在行:8字符:15 + $部首=獲取內容文件路徑$ 1 - 第一 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo:PermissionDenied:(d:\ TEMP \ TEMP_FL:字符串)獲取內容],UnauthorizedAccessException + FullyQualifiedErrorId:GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand 獲取內容:訪問路徑' D:\ Temp \ TEMP_NY'被拒絕。 在行:8字符:15 + $頭=獲取內容$文件路徑 - 首先1 –

+0

剛纔檢查我的輸出目錄和它移動的所有文件到Temp_NY目錄,即使它扔了訪問被拒絕的消息。所以它不會根據搜索字符串複製文件。找出訪問被拒絕的問題。由於這些子目錄Temp_FL和Temp_NY的是同一個目錄中的文件是試圖運行對他們的腳本爲好。給Get-ChildItem命令添加了-af,並解決了它。現在我只需要弄清楚爲什麼它將所有文件複製到一個目錄中。 –

+0

嘗試更新的答案。它只搜索文件..最後一個可能(出於某種原因)決定複製一個目錄等...另外,如果答案解決了您的問題,您可以通過使用答案旁邊的複選標記來接受它,而不是通過提供一個新的答案(這是一個評論):) –