windows - Win Batch, adskille enkeltlinje til flere

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har 2 forskellige tekstfiler.
Hver indeholder en enkelt linje, der indeholder flere parametre og/eller absolutte stier.
Hver enkelt parameter og/eller sti er vedlagt i dobbelt citater:


-d"some\_param" -d"next\_param"
-i"c:some\_path" -i"c:other\_path"


Jeg vil dele det i flere linjer, så et param eller en vej er på en enkelt linje. Jeg troede, det kunne hjælpe med at indsætte et bestemt separationsmærke, fordi et af parametrene eller stierne kan indeholde et mellemrum. Så jeg bruger LL\_FF til en nemmere håndtering.


LL\_FF


Indholdsfil 1:


-d"\_\_CHAR\_BIT=8"LL\_FF -d"\_\_SHRT\_BIT=16"LL\_FF -d"\_\_INT\_BIT=32"LL\_FF -d"\_\_LONG\_BIT=32"LL\_FF -d"CPU\_S32K144HFT0VLLT"LL\_FF  


Indholdsfil 2:


-i"C:UserssomePaths\_procC\_s32k\_conf1inc"LL\_FF -i "C:UserssomePaths\_sysprjincludesprjIncludesinc"LL\_FF -i"C:UserssomePaths\_sysprjcancanDeviceDriverinc"LL\_FF -i"C:UserssomePaths\_sysprjhalclockinc"LL\_FF -i"C:UserssomePaths\_sysprjhalintWatchdoginc"LL\_FF -i"C:UserssomePaths\_sysprjhal	imerinc"LL\_FF -i"C:UserssomePaths\_sysprjhalperipheryinc"LL\_FF -i"C:UserssomePaths\_sysprjos	askGroupManagerinc"LL\_FF -i"C:UserssomePaths\_sysprjososInterfaceinc"LL\_FF


Jeg kunne ikke skrive en batchfil, der genererede følgende output:


Fil 1:


-d"\_\_CHAR\_BIT=8"
-d"\_\_SHRT\_BIT=16"
-d"\_\_INT\_BIT=32"
-d"\_\_LONG\_BIT=32"
-d"CPU\_S32K144HFT0VLLT"


Fil 2:


-i"C:UserssomePaths\_procC\_s32k\_conf1inc"
-i"C:UserssomePaths\_sysprjincludesprjIncludesinc"
-i"C:UserssomePaths\_sysprjcancanDeviceDriverinc"
-i"C:UserssomePaths\_sysprjhalclockinc"
-i"C:UserssomePaths\_sysprjhalintWatchdoginc"
-i"C:UserssomePaths\_sysprjhal	imerinc"
-i"C:UserssomePaths\_sysprjhalperipheryinc"
-i"C:UserssomePaths\_sysprjos	askGroupManagerinc"
-i"C:UserssomePaths\_sysprjososInterfaceinc"


I param listen er der en høj possibilitet, det vil indeholde specialtegn som mellemrum, *, =
Og det skal være et batch script.
Kan nogen hjælpe mig ud, tak?


Tak og venlige hilsner.


Hvad jeg forsøgte:
Brug af erstatningssyntax fejlet på grund af specielle chars \ r \ n [12]


vedrørende dette
jeg prøvede dette: [13]


rem @echo off
SET /p \_text=<defines.lnt
echo \%\_text\%
echo
for \%\%f in ("\%\_text:LL\_FF";"\%") do echo aaa \%\%ff


Jeg lykkes i at læse filen, men jeg modtager ingen output fra sløjfen.


Jeg har også fundet løsninger, der kan arbejde, men er langt for komplekse til at være uden brug for mig, da jeg ville have brug for meget tid til at forstå ...
Så derfor er mit indlæg her.


Måde at komplekse

Bedste reference


Følgende er et batch-fileksempel af koden, jeg har angivet i min kommentar:


@Echo Off
For /F "Delims=" \%\%A In ('Type File*.txt 2^>Nul') Do For \%\%B In (\%\%~A
) Do >>Params.txt Echo \%\%B


Dette skal sætte linjen fra hver af filerne, File1.txt og File2.txt til en ny fil med navnet Params.txt, hver på en anden linje som ønsket.