- Update: item 1) Saving in Bat Itself
@echo off & setlocal enabledelayedexpansion & title <nul & title Q344161
for /f "skip=8tokens=1,2,3delims=-" %%a in ('type "%~f0"')do if "%%a-"=="-" (
goto :_salve_variaveis ) else echo/A = %%a B = %%b C = %%c & goto :eof
:_salve_variaveis
set /a A=1 + 1, B=4 + 1, C=0 + 1 & cmd /v /c echo/!A!-!B!-!C!->>"%~f0" & exit /b
rem :: As suas variaveies sarao salvas abaixo:
1) :: Using the bat itself to save/retrieve variables on itself!! ::
@echo off & setlocal enabledelayedexpansion
for /f "skip=12 tokens=1,2,3 delims=-" %%a in ('type "%~f0"') do (
if "%%a-" == "-" goto :_salve_variaveis
echo/A = %%a B = %%b C = %%c && goto :eof
)
:_salve_variaveis
set /a A=1 + 1
set /a B=4 + 1
set /a C=0 + 1
echo/!A!-!B!-!C!->>"%~f0"
call "%~f0" && exit /b
rem | As suas variáveis serão salvas na linha abaixo:
2) :: Using only notepad (abc.txt) to save and recover A, B and C values ::
@echo off
set A=2
set B=5
set C=1
echo/%A%-%B%-%C%>.\abc.txt
:: Reading the notepad (abc.txt) and recovering the values of A, B and C ::
for /f "tokens=1,2,3 delims=-" %%a in ('type .\abc.txt') do (
set A=%%a
set B=%%b
set C=%%c
echo/%A% %B% %C%
)
3) :: Using the Windows Registry via setx and/or reg add/reg query/ reg delete ::
:: Escreva suas variáveis concatenando os valores numa chave do registro do windows
:: Usando o comando setx ou reg add, de maneira que não seja necessário chamar outro
:: Arquivo, nem saber o caminho dele. O setx registra variáveis para uso "global",
:: porém só efetivamente disponibiliza a variável na próxima vez que chamar o cmd, daí entra.
:: o artifício de ler os valores não numa variável, mas sim numa entrada
:: de registro via reg query e apagando quando não mais for necessário.
@echo off
set A=2
set B=5
set C=1
:: Para escrever via setx:
setx a-b-c %A%-%B%-%C%
:: Ou ecreva direto no registro sem usar o setx via reg add:
set a-b-c=%A%-%B%-%C%&
reg add HKCU\Environment /v a-b-c /d "%A%-%B%-%C%" /f
:: Para ler o registro em outro tempo e recuperar os valores de %A%-%B%-%C%:
for /f "tokens=3 delims=^ " %%i in ('reg query HKCU\Environment ^| findstr /i /c:"a-b-c"') do set a-b-c=%%i
for /f "tokens=1,2,3 delims=-" %%a in ('echo/%%a-b-c%%') do (
set A=%%a
set B=%%b
set C=%%c
echo/%A% %B% %C%
)
:: When you no longer need to use the key, you remove the input ::
reg delete HKCU\Environment /v a-b-c /f 2>nul >nul