Zmień zawartość pliku txt za pomocą skryptu BAT


0

Muszę wziąć zawartość plików tekstowych, posortować je w kolumnie i ponownie zapisać plik.

Zawartość pliku wygląda tak, wszystko w jednym ciągu ....

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 

Muszę sprawić, aby wyglądały tak w jednej kolumnie ...

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

I tylko dla utrudnienia mi, nie zawsze wiem, jakie będą imiona w tekście. Wiem jednak, że zawsze będzie dwukropek oddzielający nazwy. Więc może istnieje sposób na przeciągnięcie tekstu między dwukropkami i zapisanie nowego tekstu w jednej kolumnie?

EDYCJA ** Lub skrypt do zmiany z wiersza na kolumnę działałby, jak sądzę.

Dzięki za wszelką pomoc, której możesz udzielić.


Pakiet Windows, zakładamy? Niedługo nad czymś popracuję.
Wally

Odpowiedzi:


0

Użyj tego kodu. Wejście jest foo.txti wyjście jest foobar.txt. Nie rozumiem, jak działa rekurencja na zmiennej %% b, ale działa to w zwykłej powłoce poleceń systemu 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.