Substituindo certas partes do arquivo de texto por variáveis em lote

0

Estou tentando substituir stat.score e stat.level pelas variáveis correspondentes, mas ele apenas imprime stat.score = 000099 em todas as linhas.

Este é o código:

@echo off
mode con cols=100 lines=40
setlocal EnableDelayedExpansion
:GameRender
del %cd%\assets\GameRender\pets\cthulhu\GameRender.txt
set "stat.score=000099"
set "stat.level=0"
set "Render_Ln=0"

for /L %%a in (1,1,39) do (

if !Render_Ln! EQU 39 goto :pause
set /a "Render_Ln=!Render_Ln!+1"

for /f "usebackq delims=@ skip=1" %%g in ("%cd%\assets\GameRender\pets\cthulhu\GameRender_source.txt") do set Line=%%g
echo:!Line! | findstr "stat."
    if %errorlevel% EQU 0 (
        set Line=%Line:stat.score=!stat.score!%
    )
echo:!Line!>>"%cd%\assets\GameRender\pets\cthulhu\GameRender.txt"
)
:pause
pause
for %%a in (%cd%\assets\GameRender\pets\cthulhu\GameRender.txt) do type %%a 
pause>nul

E aqui está GameRender_source.txt.

    
por builder_247 25.06.2016 / 22:21

2 respostas

0

Okey, então eu pude resolver isso com sua ajuda, alterando o conteúdo do GameRender_source.txt para estar apenas em uma linha.

for /f "usebackq delims=@" %%a in ("%cd%\assets\GameRender\pets\cthulhu\GameRender_source.txt") do set Render=%%a
call set "Render=%%Render:stat.score=!stat.score!%%"
call set "Render=%%Render:stat.level=!stat.level!%%"
echo:!Render!>>"%cd%\assets\GameRender\pets\cthulhu\GameRender.txt"
    
por 26.06.2016 / 14:25
1

Outra opção é usar um script do PowerShell para substituir os valores; o script deve ser um pouco autoexplicativo:

(Get-Content d:\GameRender.txt) | ForEach-Object {$_ -replace "stat.score", "000099" -replace "stat.level", "0"} | Set
-Content d:\GameRender.txt
    
por 26.06.2016 / 18:23