2013-08-02 219 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