[英]Batch file: replace string in text of a file
在使用bat文件替换文件中的某些文本时,我需要一些帮助。
我有一个需要更改版本的模板:
[assembly: AssemblyVersion("5.1.1000.0")]
[assembly: AssemblyFileVersion("5.1.1000.0")]
我已经编写了下一个脚本,但无法理解如何在文本中更改此版本:
REM %%f is a file where I will search a string a change it
for /f "tokens=2" %%p in ('findstr /r "[0-9]\.[0-9]\.[0-9]*\.[0-9]" %%f') do (
echo %%p
)
输出:
AssemblyVersion("5.1.1000.0")
AssemblyFileVersion("5.1.1000.0")
例如,如何将5.1.1000.0更改为7.1.1000.0? 其他所有文本保持不变,只有版本会更改。
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "oldversion=5.1.1000.0"
SET "newversion=7.1.1000.0"
(
FOR /f "delims=" %%a IN (q24144143.txt) DO (
SET "string=%%a"
SET "string=!string:%oldversion%=%newversion%!"
ECHO(!string!
)
)>newfile.txt
FC q24144143.txt newfile.txt
GOTO :EOF
我使用了一个名为q24144143.txt
的文件, q24144143.txt
包含用于测试的数据。 产生newfile.txt
[首先提取嗅觉的修订]
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "oldversion="
SET "newversion=7.1.1000.0"
FOR /f "tokens=2delims=()" %%a IN ('findstr /r "[0-9]\.[0-9]\.[0-9]*\.[0-9]" q24144143.txt') DO (
SET "oldversion=%%~a"
)
IF NOT DEFINED oldversion ECHO could NOT FIND old version&GOTO :EOF
ECHO(oldversion=%oldversion%
(
FOR /f "delims=" %%a IN (q24144143.txt) DO (
SET "string=%%a"
SET "string=!string:%oldversion%=%newversion%!"
ECHO(!string!
)
)>newfile.txt
FC q24144143.txt newfile.txt
GOTO :EOF
尽管-由于您说文件位于%%f
所以要么将%%f
分配给变量,要么调用此例程以将"%%f"
作为参数并读取文件"%~1"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.