2015-02-11 2 views
0

Я работаю над скриптом мелочей в php, и у меня есть проблема, которая не может пройти мимо него.объединить содержимое двух текстовых файлов в третий текстовый файл - строка за строкой

У меня есть два файла txt, один с вопросами и прочее с ответами.

Файл вопросов выглядит следующим образом:

"How many arms a person has" => 
"How many legs a person has" => 

Файл ответов выглядит следующим образом:

"2", 
    "2", 

Можно ли переместить или скопировать строки из ответов файл на вопросы файл, чтобы получить что-то как в одном файле?

"How many arms a person has" => "2", 
"How many legs a person has" => "2", 
+0

Почему на земле вы бы прибегнуть к партии, если вы уже работаете на языке более высокого уровня, как PHP? – dbenham

+0

@dbenham мой исходный вопрос ссылался на php, но поскольку мне удалось заставить его работать с пакетом, он изменился. – Allkin

ответ

2

Предполагая, что содержание файла 1 является a.txt и содержание файла 2 является b.txt и результат, как ожидается, в c.txt, попробуйте в окна пакетного файла (скажем merge.bat):

@echo off 
setlocal EnableDelayedExpansion 

set i=0 
for /F "delims=" %%a in (a.txt) do (
    set /A i+=1 
    set a[!i!]=%%a 
) 

set i=0 
for /F "delims=" %%a in (b.txt) do (
    set /A i+=1 
    set b[!i!]=%%a 
) 

for /L %%i in (1,1,%i%) do echo !a[%%i]! is from !b[%%i]!>> c.txt 
ENDLOCAL 

Отредактированный ответ для решения проблемы с несколькими циклами.

Объяснение:

setlocal EnableDelayedExpansion Включает замедленное переменную среду расширения, пока не найдешь Endlocal команды соответствия встречается, независимо от установки до начала SETLOCAL команды.

Это позволяет перевод:

!a[1]! is from !b[1]! для каждой строки в соответствующей conetent залитой массива a и b, которые заполняются из файлов a.txt и b.txt.

+0

Спасибо за ответ. Это итог c.txt '' Сколько рук у человека есть => «2» «Сколько рук у человека» => «2» «Сколько ног у человека» => «2 « « Сколько ног у человека есть »=>« 2 »' каждый вопрос отправляется дважды. – Allkin

+0

Для каждого вопроса в файле вопросов он отправляет строку с каждым ответом из файла ответов. – Allkin

+0

обновленный код, пожалуйста, проверьте и дайте мне знать ... –

0

Вы можете сделать что-то подобное в PHP:

<?php 

$questions = array(); 
$answers = array(); 

$questionFile = fopen("path/to/questions.txt", "r"); 
$answerFile = fopen("path/to/answers.txt", "r"); 

while($row = fgets($questionFile)) { 
    $questions[] = $row; 
} 

while($row = fgets($answerFile)) { 
    $answers[] = $row; 
} 

fclose($questionFile); 
fclose($answerFile); 

if(count($questions) === count($answers)) { 
    $mergingFile = fopen("path/to/thirdFile.txt", "w+"); 

    foreach($questions as $key => $question) { 
     fwrite($mergingFile, $question . $answers[$key] . "\r\n"); 
    } 

    fclose($mergingFile); 
} 
0

Очень простая задача с моим JREPL.BAT utility - гибрид JScrpit/пакетный скрипт, который выполняет поиск по регулярному выражению/заменить на текст. JREPL.BAT - это чистый скрипт, который запускается изначально на любом компьютере Windows с XP.

jrepl "^.*" "$0+' '+stdin.ReadLine()" /j /f questions.txt /o merged.txt <answers.txt 

Команда выше считывает информацию как из файла, указанного параметром /F, а также от перенаправлены стандартного ввода. Опция /J рассматривает заменяющую строку как код JScript, который выполняется для каждого совпадения.

Если вопросы могут охватывать несколько строк, то вы можете уточнить в строку поиска, чтобы получить corrrect результат:

jrepl "^.*==>$" "$0+' '+stdin.ReadLine()" /j /f questions.txt /o merged.txt <answers.txt 
Смежные вопросы