Eu executo um arquivo chamado doskeys.cmd
sempre que o Terminal do Windows é aberto para definir, entre outras coisas, aliases de comando.
Caso composer.json
exista, quero extrair a versão do PHP para poder configurar dinamicamente meu terminal para usar essa versão do PHP.
Exemplo composer.json
:
{
"license": "MIT",
"require": {
"php": "^8.4",
"mekras/php-speller": "^2.3.0"
},
"scripts": {
"post-root-package-install": "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
},
"config": {
"platform": {
"php": "8.4.4"
}
}
}
Deste arquivo, gostaria de extrair 8.4
(a 4ª linha).
Este é o código que tenho até agora:
if exist composer.json (
for /f "tokens=1,2 delims=: " %%a in (composer.json) do (
echo %%a|findstr /b """php"": """^">nul
if '%errorlevel%' EQU '0' set php=%%b
)
)
if exist composer.json echo %path%|findstr /b "C:\PHP">nul || set path=C:\PHP\php-%php%;%PATH%
No entanto, ele sofre de dois problemas.
findstr
não está ignorando linhas que não contêm"php": "^
(o que é exclusivo para a linha que preciso extrair), então meu código só funciona se"php": "^8.4",
for a linha final.- Só posso extrair
"^8.4",
(em vez de8.4
)