windows - Flette 2 txt filer i en enkelt fane afgrænset fil i batch

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg sidder fast med dette:
Jeg skal flette to tekstfiler i en enkelt fane afgrænset tekstfil på et batch script.
ex:


fil1:


qwer
tyui
asdf


fil2:


1345
6876
8796


fil3:


qwer    1345
tyui    6876
asdf    8796


Alt jeg behøver faktisk er et svar til Unix-kommandoen: paste -d " " file1 file2 > file3

Bedste reference


 @echo off

 set f1=1.txt
 set f2=2.txt
 set "sep=  "  \% tab \%

 (
   for /f "delims=" \%\%a in (\%f1\%) do (
      setlocal enabledelayedexpansion
       set /p line=
       echo(\%\%a!sep!!line!
      endlocal
   )
 )<\%f2\%

pause
goto :eof

Andre referencer 1


Walid2me's svar er fantastisk, det er kun en lille mofikation, der viser, hvordan man gør det sikkert mod tegn som !^ i filen 1.txt, indholdet af filen 2.txt er sikkert, en den læses med teh set/p syntaks.


@echo off

 set f1=1.txt
 set f2=2.txt
 set "sep=  "  \% tab \%

 (
   setlocal DisableDelayedExpansion
   for /f "delims=" \%\%a in (\%f1\%) do (
      set "f1\_line=\%\%a"
      setlocal EnableDelayedExpansion
       set /p f2\_line=
       echo(!f1\_line!!sep!!f2\_line!
      endlocal
   )
   endlocal
 )<\%f2\%

pause
goto :eof


Som du kan se, flytter jeg kun udvidelsen af ​​\%\%a lige før setlocal EnableDelayedExpansion


Der er stadig en anden lille fejl, som set/p strimler efterfølgende kontrol tegn, som enkelt CR, LF og også TAB.

Dette påvirker kun filen 2.txt.


Dybdeanalyse om set /p er ved Ny teknik: set/p kan læse flere linjer fra en fil [15]

Andre referencer 2


Der er ingen indbygget Windows-kommando, jeg ved, om det vil gøre det, men der er et sæt Unix-værktøjer til Windows her. [16]