marcimarc85
Goto Top

Per Batch Text finden und ersetzen

Hallo,

Ich habe ein Update-Script für eine Software, die eine weitere Batch-Datei aufruft, in der alle notwendigen Variablen drin enthalten sind. Unter Anderem auch eine Variable für die aktuell installierte Softwareversion. Diese ist notwendig als Variable, da beim nächsten Auführen des Update-Scripts diese Version für den Uninstaller wichtig ist.

Bisher war es so, dass die Batch mit den Variablena am Ende vom Update Script geöffnet wird und ich die neu installierte Versionsnummer per Hand eintragen muss.
Ich möchte nun, dass das Update Script den Wert automatisch ersetzt.

Beim Starten des Updatescripts wird man nach der zu installierenden neuen Version gefragt mit

set /p _new_version="Which version do you want to install (e.g. 12.1.0): "  


Im Environment-Script gibt es die Variable set _installed_version=12.2.17

Diese müsste dann am ende des Updatescripts quasi angepasst werden, durch den Wert der Variable _new_Version

demnach :

set _installed_version=%_new_Version%

Wie muss der Befehl am Ende des Updatescripts lauten, damit "_installed_Version=*" gefunden wird und ersetzt wird durch "_installed_Version=%new_Version%" ?

eine zusätzliches Powershell Script dafür nutzen , fällt aus. Das muss zwingend alles über das Updatescript gesteuert werden.

Vielen Dank schonmal

Content-Key: 1346749957

Url: https://administrator.de/contentid/1346749957

Printed on: April 25, 2024 at 09:04 o'clock

Mitglied: 149569
Solution 149569 Oct 05, 2021 updated at 11:24:05 (UTC)
Goto Top
Zitat von @MarciMarc85:
eine zusätzliches Powershell Script dafür nutzen , fällt aus. Das muss zwingend alles über das Updatescript gesteuert werden.
Wer sagt das man Powershell-Code nicht direkt in eine Batch integrieren kann face-smile?! Das geht schmerzlos
@echo off
set "env_script_path=D:\Ordner\env_script.cmd"  
set /p _new_version="Which version do you want to install (e.g. 12.1.0): "  
powershell -EP Bypass -C "(gc '%env_script_path%') -replace '(^set _installed_version=).*','$1%_new_version%' | sc '%env_script_path%' "  

Wenn du aber unbedingt Plain Batch bevorzugst, kannst du es z.B. so machen
@echo off
set "env_script_path=D:\Ordner\env_script.cmd"  
set "env_script_path_new=D:\Ordner\env_script_new.cmd"  
set /p _new_version="Which version do you want to install (e.g. 12.1.0): "  
>"%env_script_path_new%" (for /f "delims=" %%a in ('findstr "^" "%env_script_path%"') do (  
	echo.%%a|findstr /ilc:"set _installed_version=" >nul 2>&1 && (  
		echo set _installed_version=%_new_version%
	) || (
		echo.%%a
	)
))