我需要获取文本文件的内容并将其排序到一列,然后重新保存该文件。
文件的内容看起来像这样,全部在一个字符串中......
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