2013-08-02 6 views
1

Я пытаюсь экспортировать сообщения Kunena на форум, чтобы импортировать их на наш новый сервер форумов wp. Для этого I've созданы 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, parent, time, userid, subject и hits. Из второго я нужен соответствующий «поле» сообщение

После этого он должен быть отформатированный как это:

(`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

они связаны через поле userid, которое включает идентификатор пользователя, который настроен в другой таблице. –

+0

Если ответ ниже помог или ответил на ваш вопрос, можете ли вы его перенести или принять, спасибо. – 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

Ok , просто чтобы быть ясным, что это 'ID' в первом файле, который совпадает с именем' mesid' во втором файле? – Richard

Смежные вопросы