使用BAT脚本修改txt文件内容

使用BAT脚本修改txt文件内容

我需要获取文本文件的内容并将其排序到一列,然后重新保存该文件。

文件的内容看起来像这样,全部在一个字符串中......

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

使用此代码。输入是foo.txt,输出是foobar.txt。我不明白递归如何在 %%b 变量上工作,但它在 Windows 7 Pro 常规命令 shell 上确实如此。

@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

相关内容