我需要一些帮助来使用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?所有文本的其他文本保持不变,只会更改版本。
答案 0 :(得分:1)
这会将任何字符串从Version("nnnnnnnnnnn")
更改为Version("7.1.1000.0")
,其中nnnnn是任意字符串。
@echo off
type "file.txt" | repl "(Version\()\q.*\q(\))" "$1\q7.1.1000.0\q$2" x >"newfile.txt"
这使用名为repl.bat
的助手批处理文件(由dbenham提供) - 从以下网址下载:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
将repl.bat
放在与批处理文件相同的文件夹中或放在路径上的文件夹中。
答案 1 :(得分: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
的文件,其中包含我的测试数据。
生成newfile.txt
[首先提取olversion的修订]
@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"
< / p>