[英]Batch Combine two text files into one file, on top of each other
我遇到了一些麻煩,這似乎有些怪異。 我正在開發一個程序,將兩個文件在同一行上合並為一個文件。 只顯示差異。 (抱歉,我的解釋不好)。 因此,我想在這里可視化它:
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腳本,請也告訴我。 :)
01/02/2018
編輯:
下面,我使用了Squashman的腳本。.我的所有答案都工作得很好,可悲的是,當我嘗試使用更長的行時,出現了一些錯誤。
File 1:
()
[]
/\
-----------------------------------------------------------------------------------------------------------
File 2:
()
[]
/\
-----------------------------------------------------------------------------------------------------------
結果是這樣的:
() ()
[] []
/\ /\
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------
因此,該行將自身克隆。 我想做的另一件事是使行直立,就像沒有身體的第三個角色一樣。 可悲的是結果不是我所期望的。 讓我再次形象化:)
File 1:
() !
[] !
/\ !
-----------------------------------------------------------------------------------------------------------
File 2:
! ()
! []
! /\
-----------------------------------------------------------------------------------------------------------
而且我得到的有點奇怪。 結果在這里:
() file2
[] file2
/\ file2
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------
謝謝。
換完后! 與|:
() | | ()
[] | | []
/\ | | /\
----------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------
02/02/2018
這與批處理文件的要求接近。 唯一的問題是最后一行很長,因為它將行合並在一起。 paste命令將執行相同的操作。
@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
由於挑戰而完成。 注意:這很慢,因為每個字符必須自己處理。
@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
file1.txt
() |
qp |
|| |
--------------------------------
file2.txt
()
[]
/\
--------------------------------------------------
file3.txt
() | ()
qp | []
|| | /\
--------------------------------------------------
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.