2013-08-02 215 views
1

我試圖導出我的Kunena論壇帖子,將它們導入到我們新的wp論壇服務器中。對於這個從來就創建2個文件......其中一個包含以下格式的信息:從2個txt文件創建導入文件

(`id`, `parent`, `thread`, `catid`, `name`, `userid`, `email`, `subject`, `time`, `ip`, `topic_emoticon`, `locked`, `hold`, `ordering`, `hits`, `moved`, `modified_by`, `modified_time`, `modified_reason`) 

其他包含郵件正文:

(`mesid`, `message`) 

從第一個文件,我只需要「字段」ID,父母,時間,用戶ID,主題和匹配。 從第二個我所需要的相應的「場」的消息

此後,它的格式應該是這樣的:

(`id`, `message`, `parent`, `time`, `userid`, `subject`, `hits`) 

由於有數百個職位和複製&粘貼的事情實在是費時我認爲這將是一個更容易通過腳本通過PowerShell來做到這一點... ...最好

希望你們能幫助我了......

$outputFile = "C:\logFile.txt" 
$path = "C:\kunena_messages.txt" 
$path2 = "C:\kunena_messages_text.txt" 

get-content $path | % {$array = $_ -split ",","0"     
        $message = get-content $path2 | %{If($_ -match ($array[0].Trim() -replace "\(","")){ 
           $msgArray = $_ -split ",","0" 
           $msgArray[1] -replace "\)",""}} 
         $newString = $array[0].Trim()+","+$message +","+$array[1].Trim()+","+` 
             $array[8].Trim()+","+$array[5].Trim()+","+$array[7].Trim()+","+` 
             $array[14].Trim()+")" 
         $newString | ac $outputFile 

} 
+0

如何鏈接到你的用戶的郵件? – Richard

+0

他們通過字段用戶ID連接,其中包括在另一個表中配置的用戶的ID –

+0

如果下面的答案已經幫助或回答了您的問題,您可以upvote或接受它,謝謝。 – Richard

回答

0

你可以嘗試這樣的事情,讓你所需要的信息:

$outputFile = "C:\logFile.txt" 
$path = "C:\test\test.txt" 
get-content $path | %{$array = $_ -split ",","0" 
         $message ="This is a message" 
         $newString = "("+$array[0].Trim()+","+$message +","+$array[1].Trim()+","+` 
             $array[8].Trim()+","+$array[5].Trim()+","+$array[7].Trim()+","+` 
             $array[14].Trim()+")" 
         $newString | ac $outputFile 
        } 

這將會給給定的文件($outputFile)在下面的輸出。

("`id`,`This is a message`,`parent`,`time`,`userid`,`subject`,`hits`) 
("`id2`,`This is a message`,`parent2`,`time`,`userid`,`subject`,`hits`) 
("`id3`,`This is a message`,`parent2`,`time`,`userid`,`subject`,`hits`) 

正如您所看到的,我已經挑選出除消息外您需要的所有零件;因爲我不確定你如何連接兩者。您需要做的就是使用類似的方法來獲取正確的信息並將其放入變量$message


去,前提是你的ID和MesID都是一樣的,你可以使用類似這樣的$message varible:

$path2 = "C:\Messages\test.txt"   
$message = get-content $path2 | %{ $msgArray = $_ -split ",","0" -replace "\)","" 
            $msgArray = $msgArray -replace "\(","" 
            $m = $array[0].Trim() -replace "`"","" 
            If($msgArray[0].Trim() -eq $m){$msgArray[1]} 
            } 

$path2是路徑到您的消息文件。


所以大家聚在一起的應該是這樣的:

$outputFile = "C:\logFile.txt" 
$path = "C:\kunena_messages.txt" 
$path2 = "C:\kunena_messages_text.txt" 

get-content $path | %{$array = $_ -split ",","0" 
         $array = $array -replace "\(","" ` 
             -replace "\)","" ` 
             -replace "`"","" 
         $message = get-content $path2 | %{ $msgArray = $_ -split ",","0" -replace "\)","" 
                 $msgArray = $msgArray -replace "\(","" 
                 $m = $array[0].Trim() -replace "`"","" 
                 If($msgArray[0].Trim() -eq $m){$msgArray[1]} 
                 } 
         $newString = "("+$array[0].Trim()+","+$message +","+$array[1].Trim()+","+` 
             $array[8].Trim()+","+$array[5].Trim()+","+$array[7].Trim()+","+` 
             $array[14].Trim()+")" 
         $newString | ac $outputFile 
        } 
+0

是的...這就是我想要做的,但只是我試圖使用該id爲mesid,因爲這是該職位的參考 –

+0

我會將新腳本張貼到原始帖子 –

+0

好的,只是要清楚它是第一個文件中的「ID」,與第二個文件中的「mesid」相同? – Richard