Как я могу объединять файлы построчно в командной строке Windows?

3900
Paul

В дос, есть ли способ объединить набор файлов так, чтобы, например,

1.txt

а
б
в

а также

2.txt

1
2
3

становится

merged.txt

а 1
б 2
с 3

Так же, как команда вставки в системах * nix

1
dos как в "dos - операционная система" или как в "windows cmd.exe"? akira 13 лет назад 3
Cygwin работает на меня XIMRX 9 лет назад 0

3 ответа на вопрос

1
invert

Нет, вам нужно объединить строки с программой или языком сценариев, таким как Python.

Обновление: посмотрите на эти Win-порты утилит GNU, они включают в себя вставку (.exe)

Очень плохо. Сукки, чтобы не было Linux на работе ...: p Paul 13 лет назад 1
@Paul: установить http://cygwin.com/setup.exe akira 13 лет назад 0
1
Satanicpuppy

Если данные достаточно просты, вы можете сделать это с помощью Excel. Или вы можете скачать OpenOffice и сделать это в Calc, но метод в Calc это боль. (Вам нужно вставить данные в два столбца, а затем объединить их с помощью функции «Конкатенация» в форме формулы (например, конкатенация (Row1; row2;))

1
Kanji

Определенно соглашаются, что порт инструментов Unix или язык сценариев является путь (хотя VBScript или Powershell, вероятно, более удобный выбор, чем Python для пользователей Windows), но слияние двух файлов IS возможно в DOS: -

@ECHO OFF  REM .bat to merge 1.txt and 2.txt  GOTO :Main  :StartMerge SET /P _a=<%1 SET /P _b=<%2  ECHO %_a% %_b%  DEL %1 %2  GOTO :EndMerge  :CleanUp SET _LinesIn1= SET _LinesIn2=  SET _a= SET _b=  GOTO :EOF  :Main SET _LinesIn1=0 SET _LinesIn2=0  FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 1.txt') DO ( ECHO.%%j>_c1n%%i SET /A _LinesIn1+=1 )  FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 2.txt') DO ( ECHO.%%j>_c2n%%i SET /A _LinesIn2+=1 )  IF %_LinesIn1% NEQ %_LinesIn2% ( ECHO Cannot merge files; mismatched line count:- ECHO 1.txt - %_LinesIn1% lines ECHO 2.txt - %_LinesIn2% lines  DEL _c*  GOTO :CleanUp )  FOR /L %%n IN (1, 1, %_LinesIn1%) DO ( CALL :StartMerge _c1n%%n _c2n%%n  :EndMerge REM No-op to avoid ") was unexpected at this time." error )  GOTO :CleanUp 

Файл в разделе «Просто потому, что вы можете, не означает, что вы должны». :-)