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
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 :
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1346749957
Url: https://administrator.de/contentid/1346749957
Ausgedruckt am: 25.11.2024 um 04:11 Uhr
1 Kommentar
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 ?! Das geht schmerzloseine zusätzliches Powershell Script dafür nutzen , fällt aus. Das muss zwingend alles über das Updatescript gesteuert werden.
@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
)
))