Quem está conectado?
Há 1 usuário online :: 0 registrados, 0 invisíveis e 1 visitante Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 153 em Ter Mar 09, 2021 2:43 am
Últimos assuntos
Os membros mais ativos do mês
Nenhum usuário |
Destaque do mês
Obrigado pela colaboração!
[BAT] Obtendo o tamanho de uma string (length)
3 participantes
Página 1 de 1
[BAT] Obtendo o tamanho de uma string (length)
Exemplo:
length.bat
length.bat
- Código:
@echo off
title Soma tamanho da string
set /p mystring="Degite um nome: "
set "myvar=%mystring%"
rem calcula o comprimento de uma string
set #=%myvar%
set length=0
:loop
if defined # (
rem Encurtar a corda por um caractere
set #=%#:~1%
rem incrementa a string contando a variavel %length%
set /A length += 1
rem repetir ate string ser null
goto loop
)
echo %myvar% tem %length% caracteres!
pause
Re: [BAT] Obtendo o tamanho de uma string (length)
Outro jeito que eu escriver mas com o For :
- Código:
@echo off
setlocal enabledelayedexpansion
Set /P $Tstring=Entrez une chaine de caractere:
for /l %%a in (0,1,9000) do (set $t=!$Tstring:~%%a,1!&if not defined $t (echo [carctere =] %%a&pause&exit /b))
endlocal
pause
- Código:
@echo off
Set /P $Tstring=Entrez une chaine de caractere:
echo %$Tstring%>x&FOR %%z IN (x) DO (set /a $stl=%%~zz-2&del x&echo [LONGEUR =] %$stl%)
pause
- Código:
@echo off
setlocal enabledelayedexpansion enableextensions
Set /P $Tstring=Entrez une chaine de caractere:
ECHO %$Tstring%>x&FOR %%z IN (x) DO (cls&set /a length=%%~zz+1&del x&set $f=
for /l %%a in (0,1,!length!) do (set $f=#!$f!)
echo !$f!&echo # %$Tstring% #&echo !$f!)
endlocal
pause
Última edição por sachadee em Dom Dez 15, 2013 4:37 pm, editado 1 vez(es)
sachadee- Moderadeiro
-
Mensagens : 157
Pontos : 291
Data de inscrição : 28/06/2013
Localização : porai
Barra Respeito às Regras :
Re: [BAT] Obtendo o tamanho de uma string (length)
Utilizar setlocal enabledelayedexpansion enableextensions só pra poder concatenar alguns comandos em uma única linha no loop for é desperdício, o que seria poupado por conta dos 2 bytes de quebra de linha em um arquivo de texto é compensado pelo comando longo, ficando maior do que o código simplificado abaixo:
Ou, ainda menor, usando echo ao invés de set:
Além de consumir menos recursos para ser executado.
- Código:
@echo off
set /p "c=str>> "
set /p none=%c%<nul>tmp
for %%z in (tmp) do set /a length=%%~zz
del tmp&echo strlen: %length%
pause>nul
Ou, ainda menor, usando echo ao invés de set:
- Código:
@echo off
set /p "c=str>> "
echo.%c%>tmp
for %%z in (tmp) do set /a length=%%~zz-2
del tmp&echo strlen: %length%
pause>nul
Além de consumir menos recursos para ser executado.
MasterMC- sou nível 2
-
Mensagens : 8
Pontos : 10
Data de inscrição : 15/12/2013
Idade : 26
Barra Respeito às Regras :
Re: [BAT] Obtendo o tamanho de uma string (length)
Não foi para poupar nada, isso
Funciona tbm sem o
Só e tirar e colocar %$stl% no lugar de !$stl!
Eu efetivamente esqueci de tirar porque eu fiz primeiro o código com o quadro embutido.
Agora Vc fala de desperdício. Eu não vejo de qual desperdício Vc esta falando.
Aqui eu fiz um código com um outro jeito de contar um string :
Não e muito performante mas existe essa possibilidade também.
Funciona tbm sem o
- Código:
setlocal enabledelayedexpansion
Só e tirar e colocar %$stl% no lugar de !$stl!
Eu efetivamente esqueci de tirar porque eu fiz primeiro o código com o quadro embutido.
- Código:
@echo off
Set /P "$Tstring=str : "
echo %$Tstring%>x&FOR %%z IN (x) DO (set /a $stl=%%~zz-2&del x&echo [LONGEUR =] %$stl%)
pause
Agora Vc fala de desperdício. Eu não vejo de qual desperdício Vc esta falando.
Aqui eu fiz um código com um outro jeito de contar um string :
- Código:
@echo off
set $c=-1
set /p "$s=Str : "
for /F "delims=" %%c in ('cmd /D /U /C echo %$s% ^| find /V ""') do (set /a $c+=1)
echo %$c%
Não e muito performante mas existe essa possibilidade também.
sachadee- Moderadeiro
-
Mensagens : 157
Pontos : 291
Data de inscrição : 28/06/2013
Localização : porai
Barra Respeito às Regras :
Re: [BAT] Obtendo o tamanho de uma string (length)
Releia, o desperdício era referente ao comando setlocal.
Forma alternativa interessante, e até bem prática. A melhor que eu vi até agora.
Forma alternativa interessante, e até bem prática. A melhor que eu vi até agora.
MasterMC- sou nível 2
-
Mensagens : 8
Pontos : 10
Data de inscrição : 15/12/2013
Idade : 26
Barra Respeito às Regras :
Re: [BAT] Obtendo o tamanho de uma string (length)
Obrigado.
Agora cuidado se vc quer usar esse codigo tem que melhorar um pouco o codigo
testando se o string esta definido. Se não ele vai retornar um valor mesmo se o string esta vazio "".
sachadee- Moderadeiro
-
Mensagens : 157
Pontos : 291
Data de inscrição : 28/06/2013
Localização : porai
Barra Respeito às Regras :
Re: [BAT] Obtendo o tamanho de uma string (length)
Eu sei, é só tratar antes de passar a string para ter os caracteres contados.
MasterMC- sou nível 2
-
Mensagens : 8
Pontos : 10
Data de inscrição : 15/12/2013
Idade : 26
Barra Respeito às Regras :
Tópicos semelhantes
» [BAT] Split String - Dividir uma String, Extrato Substrings por delimitadores
» [BAT] Obtenha o tamanho da resolução da tela!
» [BAT] Obtendo informações de um arquivo
» [BAT/VBS] Obtendo a data de criação de um arquivo
» [BAT] Obtenha o tamanho da resolução da tela!
» [BAT] Obtendo informações de um arquivo
» [BAT/VBS] Obtendo a data de criação de um arquivo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom Dez 10, 2023 10:47 am por Raffa
» [BAT] MegaNumeros simulador da mega sena
Sex Jan 17, 2020 7:00 pm por castioni24
» Agendador de tarefas
Seg Ago 26, 2019 1:53 pm por Delmar Grande
» Remover duplicados e frases de um txt
Ter Jul 23, 2019 7:00 pm por Delmar Grande
» Modificações do nome de usuário
Qui maio 24, 2018 1:14 am por biopha
» [bat] Deletar uma linha de um lote de arquivo Txt, sem matar as linhas vazias
Ter Ago 01, 2017 1:46 pm por sachadee
» Aulas de cmd
Sex Fev 24, 2017 4:44 pm por sachadee
» Fazer chat em rede domestica
Dom Ago 14, 2016 12:19 am por Diego Augusto
» redirecionar comando for pra outro batch
Sex maio 27, 2016 1:29 pm por castioni24