批处理将两个文本文件合并到一个文件中,彼此重叠

时间:2018-02-01 16:39:53

标签: batch-file text vbscript

我遇到了麻烦,这看起来有点奇怪。我正在研究一个程序,将两个文件组合成一个文件,在同一行上。只有差异显示。 (抱歉我的解释不错)。 因此,我想在这里想象一下:

File 1:

    ()
    []
    /\
--------------------------------------------------

Ander这是另一个文件:

File 2:

                                      ()
                                      []
                                      /\
--------------------------------------------------

运行脚本后我需要这些文件:

Combined Version:
    ()                                ()
    []                                []
    /\                                /\
--------------------------------------------------

我试图找到一种方法来合并文件,并替换现有的内容,并且只添加新内容。

我尝试了几种方法,我尝试使用FC命令,但是我无法使用该命令。我尝试使用如下命令:

type "File 1.txt" 1>> Combined.txt
type "File 2.txt" 1>> Combined.txt
And I tried: for %f in (*.txt) do type "%f" >> Combined.txt

可悲的是,(正如预期的那样)这一切都没有按我想要的方式工作,我所有尝试的输出都是文件1和文件2,在一个文件中,但没有合并,如下所示:

Combined Version:
    ()
    []
    /\
--------------------------------------------------

                                      ()
                                      []
                                      /\
--------------------------------------------------

这就是我试图避免的;)所以,如果你对这个话题有所了解,请告诉我。此外,如果您知道任何VBS脚本,请告诉我。 :)

2018年1月2日

修改

下面我使用了 Squashman的脚本..我的所有答案都很完美,遗憾的是,当我尝试使用更长的行时,我遇到了一些错误。

File 1:
                 ()                                             
                 []                                             
                 /\                                                          
-----------------------------------------------------------------------------------------------------------

File 2:
                                           ()               
                                           []               
                                           /\                           
----------------------------------------------------------------------------------------------------------- 

结果如下:

                                           ()                                    ()
                                           []                                    []
                                           /\                                    /\
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------

因此,该行克隆了自己。我试图做的另一件事就是让一条线站立起来,就像没有身体的第三个角色一样。遗憾的是结果不是我的预期。让我再次想象一下:)

File 1:
                       ()                 !             
                       []                 !             
                       /\                 !                           
----------------------------------------------------------------------------------------------------------- 

File 2:
                                          !              ()             
                                          !              []             
                                          !              /\           
-----------------------------------------------------------------------------------------------------------       

我得到的东西有点奇怪。结果如下:

                       ()                 file2
                       []                 file2
                       /\                 file2
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------    

谢谢。

改变之后!与|:

                       ()                 |                                                       |              ()   
                       []                 |                                                       |              []   
                       /\                 |                                                                     |              /\
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------    

2018年2月2日

2 个答案:

答案 0 :(得分:0)

这与批处理文件的内容非常接近。唯一的问题是最后一行非常长,因为它将这些行合并在一起。粘贴命令也会做同样的事情。

@echo off
setlocal enabledelayedexpansion
< file2.txt ( FOR /F "delims=" %%G IN (file1.txt) DO (
set /p file2=
echo %%G!file2!
)
)>combined.txt
type combined.txt
pause

答案 1 :(得分:0)

由于挑战而完成。注意:这非常慢,因为每个角色都必须自己处理。

http

FILE1.TXT

@echo off
setlocal enabledelayedexpansion
REM read first file to array:
set i=0
for /f "delims=" %%a in (file1.txt) do (
  set /a i+=1
  set "file1-!i!=%%a"
)
REM read second file to array:
set i=0
for /f "delims=" %%a in (file2.txt) do (
  set /a i+=1
  set "file2-!i!=%%a"
)
REM calculate result
for /l %%i in (1,1,%i%) do (
  set "res="
  for /l %%j in (0,1,49) do call :join  %%i %%j
  >>file3.txt echo !res!
)
goto :eof

:join
set "f1=!file1-%1:~%2,1!"
set "f2=!file2-%1:~%2,1!"
if "%f1%" == "" set "f1= "
if "%f2%" == "" set "f2= "
if "%f2%" neq "%f1%" (
  if "%f2%" gtr " " (
    set "f3=%f2%"
  ) else (
    set "f3=%f1%"
  )
) else (
  set "f3=%f1%"
)
set "res=%res%%f3%"
goto :eof

FILE2.TXT

    ()                  |
    qp                  |
    ||                  |
--------------------------------

file3.txt

                                      ()
                                      []
                                      /\
--------------------------------------------------