Altere o conteúdo do arquivo txt com o script BAT

0

Eu preciso pegar o conteúdo dos arquivos de texto e organizá-los em uma coluna e salvar novamente o arquivo.

O conteúdo do arquivo se parece com isso, tudo em uma string ....

core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:telephony-common.jar:mms-common.jar:android.policy.jar:services.jar:apache-xml.jar:sec_edm.jar:seccamera.jar:scrollpause.jar:stayrotation.jar:smartfaceservice.jar:abt-persistence.jar:secocsp.jar:sc.jar 

Eu preciso que eles fiquem assim em uma coluna ...

core.jar:
core-junit.jar:
bouncycastle.jar:
ext.jar:
......etc

E só para tornar as coisas mais difíceis para mim, eu nem sempre sei quais serão os nomes no texto. Eu sei que sempre haverá um cólon separando os nomes. Então, talvez haja uma maneira de extrair texto entre dois pontos e salvar em um novo texto em uma única coluna?

EDIT ** Ou, um script para mudar de linha para coluna funcionaria eu acho.

Obrigado por qualquer ajuda que você possa dar.

    
por user2019273 30.08.2013 / 15:32

1 resposta

0

Use este código. A entrada é foo.txt e a saída é foobar.txt . Eu não entendo como a recursão funciona na variável %% b, mas no shell de comando regular do Windows 7 Pro.

@echo off
setlocal enabledelayedexpansion
goto afterfunctions

REM http://stackoverflow.com/questions/5837418/how-do-you-get-the-string-length-in-a-batch-file
:trimstring <therestVar> <inputVar>
(
    setlocal EnableDelayedExpansion
    for /f "tokens=1,* delims=:" %%a in ("!%~2!") do (
        echo %%a
        REM echo %%b
        REM %%b is the rest of it. Now we need to call this function with just that string.
        call :trimstring result %%b
    )
)
(
    endlocal
    exit /b
)

:afterfunctions
for /f "delims=" %%x in (foo.txt) do set mystring=%%x
set thisstring=%mystring%
call :trimstring result mystring > foobar.txt
:eof
    
por 30.08.2013 / 22:07

Tags