Мне нужно взять содержимое текстовых файлов и отсортировать их в столбец и повторно сохранить файл.

Содержимое файла выглядит так, все в одной строке ....

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 

Мне нужно, чтобы они выглядели так в одной колонке ...

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

И просто чтобы мне было сложнее, я не всегда знаю, какие имена будут в тексте. Я знаю, что всегда будет двоеточие, разделяющее имена. Так, может быть, есть способ вытащить текст между двоеточиями и сохранить новый текст в одном столбце?

РЕДАКТИРОВАТЬ ** Или сценарий для перехода от строки к столбцу будет работать, я думаю.

Спасибо за любую помощь, которую вы можете оказать.

1 ответ1

0

Используйте этот код. Вводом является foo.txt а выводом - foobar.txt . Я не понимаю, как рекурсия работает с переменной %% b, но она работает в обычной командной оболочке 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .