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-ID: 1346749957

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

Ausgedruckt am: 25.11.2024 um 04:11 Uhr

149569
Lösung 149569 05.10.2021 aktualisiert um 13:24:05 Uhr
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
	)
))