Eu preciso cortar variáveis em duas variáveis menores após o último ponto.
Por exemplo, a variável " european.union
" será vara=european
e varb=union
Eu uso o seguinte código para atingir esse objetivo:
for /f "tokens=1 delims=." %%a in ("%elvariato%") do set vara=%%a
for /f "tokens=2 delims=." %%a in ("%elvariato%") do set varb=%%a
O problema é que esse código não pode gerenciar vários " .
"dividir variáveis. Por exemplo, a variável spain is in.the.european.union
faria totalmente este código inútil.
vara="spain is in"
varb=the
seria a saída, mas eu preciso vara="spain is in.the.european"
varb=union
Não se preocupe em espaços var, eu posso gerenciá-los.
Eu quero dividir a variável no último ponto .
mas eu não sei como conseguir isso. Eu tentei ler o número total de tokens para mesclar todos os tokens até N-1, mas não funcionou. Ser incapaz de saber o número de pontos antes que a variável seja analisada pelo script faz com que seja difícil. Alguma sugestão?
O seguinte trecho de código (parcialmente comentado) mostra a solução pura de arquivo em lote:
Amostra de saída :
Recursos (leitura obrigatória, incompleta):
%~1
etc página especial) Argumentos da linha de comando (parâmetros)%_auxiliary:~0,1%
etc) Extrair parte de uma variável (substring)%elvariato:.=%
etc) Variável Editar / Substituirfonte
Isso pode ser "trapaça" mas, desde que o seu delimitador seja ponto (“
.
”), você pode usar um truque: finja que sua string é um nome de arquivo:%%~nA
e%%~xA
tratar%%A
como um nome de caminho e extrair a parte do nome do arquivo base e a extensão, respectivamente. O nome do arquivo base é definido para ser tudo até o último ponto, então essa é a suavara
. A extensão é o último ponto e tudo depois dele (por exemplo, “.txt
”), que não é o que você quer. Então nós atribuímos a extensão paravarb_plus
- é o valor desejado paravarb
mais um ponto Então é fácil de usarfor /f "delims=. tokens=1"
para obter a parte depois do ponto.Porque
%%~nA
está retornando o parte do nome de arquivo base do%%A
, isso falhará se sua variável completa contiver/
ou\
. Você pode ser capaz de lidar com isso olhando%%~pA
(a parte do nome do caminho%%A
) mas não é imediatamente óbvio como fazer isso especialmente se puder conter ou/
ou\
.fonte
%%~pA
; deixe-me saber se você precisar deles.