我遇到了麻烦,这看起来有点奇怪。我正在研究一个程序,将两个文件组合成一个文件,在同一行上。只有差异显示。 (抱歉我的解释不错)。 因此,我想在这里想象一下:
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日
答案 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
()
[]
/\
--------------------------------------------------