-2

Preciso pegar somente o número da versão do Postgres do comando postgres -V. Estou tentando fazer isso com o comando for, mas sem sucesso. Segue abaixo o comando original e a forma que estou tentando pegar o número 10:

Comando original: postgres -V

Saída: postgres (PostgreSQL) 10.14 (Desejo pegar apenas o número 10 dessa saída, pois é o nome do diretório que vem antes do diretório bin, preciso disso para um script de backup que estou montando).

Tentativa de pegar apenas o número 10 com o comando for:

Entrada: For /f "Tokens=1,3 delims=." %a in ('postgres -V') do (echo %a)

Saída: postgres (PostgreSQL) 10

Entrada: For /f "Tokens=2 delims=." %a in ('postgres -V') do (echo %a)

Saída: 14

Já tentei de várias formas, mas não consigo capturar apenas o número 10. Alguém teria uma sugestão para eu conseguir fazer isso?

2
  • não tenho postgree instalado, mas o comando seria assim, faça um teste e se estiver ok eu ponho na resposta: for /F "tokens=1,2,3 delims= " %a in ('postgres -V') do (echo %c) Commented 10/05/2022 às 17:13
  • @RicardoPontual Não funcionou, saída é 10.14.
    – Io-ol
    Commented 20/06/2023 às 13:42

2 Respostas 2

0

Dentro do prompt de comando seria algo assim:

for /f "tokens=3 delims=. " %a in ('postgres -V') do echo %a

Para salvar a versão em uma variável chamada %Versao% dentro de um arquivo bat seria algo assim:

for /f "tokens=3 delims=. " %%a in ('postgres -V') do set Versao=%%a
0
>for /f "tokens=3 delims=). " %G in ('postgres -V')do @echo\%G
10
:: ou.. 

>for /f tokens^=3delims^=^).^  %G in ('postgres -V')do @echo\%G
10

  • Para testar sem ter PostgreSQL instalado:
for /f delims^= %i in ('"echo/postgres (PostgreSQL) 10.14"')do @for /f tokens^=3delims^=^).^  %G in ('echo/%i')do @echo\%G

:: Ou.. 
 
for /f delims^= %i in ('"echo/postgres (PostgreSQL) 10.14"')do @for /f tokens^=3delims^=^).^  %G in ('echo/%i')do @echo\%G

Use multiplos delimitadores: ) + . + Espaço:

Apenas observe onde é necessário o uso de duplo espaço:

for /f "tokens=3 delims=).Espaço"Espaço%G in (...
for /f tokens^=3^delims^=^).^EspaçoEspaço%G in (...

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .