使用批处理命令编辑文本文件中的特定行
问题描述:
我有一个包含以下文本的文本文件。使用批处理命令编辑文本文件中的特定行
“模块”
{ "ModuleSignature" = "8:MergeModule.6F1248514B3047E99E4EE8A129CB8605" "Version" = "8:1.0.0.0" "Title" = "8:uoipmsm" "Subject" = "8:" "Author" = "8:Microsoft" "Keywords" = "8:" "Comments" = "8:" "SearchPath" = "8:" "UseSystemSearchPath" = "11:TRUE" "TargetPlatform" = "3:1" "PreBuildEvent" = "8:" "PostBuildEvent" = "8:" "RunPostBuildEvent" = "3:0" }
在上述;我想更改我从工具触发构建时要提供的版本号。
我想在批处理文件中传递参数$版本,它必须从我使用的工具中获取版本号,并在该文本文件中更新相同的版本号。
例如:在上面的文本中,我想将其编码为“版本”=“8:$版本”,因此当我在触发构建时提供版本号时,它必须在此文本文件中进行更新。
请你指导我如何编辑特定的行。我是windows批处理脚本的新手。
我想在文本文件中添加一个点...我必须在行号399中修改版本。所以批处理文件必须跳转到该文本文件中的第399行,并修改相同的。请帮我解决同...
我曾在一个文本垫保存上面的脚本并保存一样ver.bat;并在同一个文件夹中保存了Intext文件。当我提到要替换的行号时,它将从第1行删除“=”符号后面的内容到399。
之前运行的批处理文件:
"ModuleSignature" = "8:MergeModule.6F1248514B3047E99E4EE8A129CB8605"
"Version" = "8:1.0.0.0"
"Title" = "8:uoipmsm"
"Subject" = "8:"
"Author" = "8:Microsoft"
"Keywords" = "8:"
"Comments" = "8:"
"SearchPath" = "8:"
"UseSystemSearchPath" = "11:TRUE"
"TargetPlatform" = "3:1"
"PreBuildEvent" = "8:"
"PostBuildEvent" = "8:"
"RunPostBuildEvent" = "3:0"
我提到的行数为10,达后,如果我运行该批处理文件;我得到以下输出;
"ModuleSignature" =
"Version" = ""
"Title" =
"Subject" =
"Author" =
"Keywords" =
"Comments" =
"SearchPath" =
"UseSystemSearchPath" =
"TargetPlatform" =
"PreBuildEvent" =
"PostBuildEvent" =
"RunPostBuildEvent" =
任何想法?
答
这应该这样做。当然,如果你的输入文件改变了,这将不得不改变。如果输入文件中有空行(它们不计数),则可能还需要进行调整。请注意,您只需要传递版本(不是整个新行399)。在你的例子中将是“8:1.0.0.0”。如果在那里有空格,最好引用字符串。 通过解释,这将:
- 此bat文件必须以参数
- 使用for循环呼应第398行到一个临时文件
- 使用添加新行399被称为作为参数
- 使用更于各剩余行追加到临时文件
- 复制临时文件到原始文件
- 删除临时文件通过的版本
X
@echo off
REM %1=Version (use quotes if there are spaces in version)
set ReplaceLine=399
set InFile=Test.txt
set TempFile=TempTest.txt
if exist "%TempFile%" del "%TempFile%"
if "%~1"=="" (
color CF
echo.This program must be called with an argument!
pause
goto :eof
)
setlocal enabledelayedexpansion
set /A Cnt=1
for /F "tokens" %%a in (%InFile%) do (
echo.%%a>> "%TempFile%"
set /A Cnt+=1
if !Cnt! GEQ %ReplaceLine% GOTO :ExitLoop
)
:ExitLoop
endlocal
echo."Version" = "%~1">> "%TempFile%"
more +%ReplaceLine% < "%InFile%">> "%TempFile%"
copy /y "%TempFile%" "%InFile%"
del "%TempFile%"
goto :eof