Ir ao conteúdo

Outro (BATCH) Como extrair texto de variável usando número e repetir


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

Boa tarde! Alguém pode me ajudar com esse código pfv?
cof cof @ricardo_br cof cof
Vou dar uma explicada no que eu quero...
Estou criando uma ferramenta para TOCAR MÚSICAS pelo cmd.
Já tenho o script de tocar áudios funcionando.
Eu quero fazer o seguinte:
Se eu digitar "musica 123454321,1,2.3;4;5" ele deve tocar os audios nessa maneira (por exemplo):


1.wav   2.wav   3.wav   4.wav   5.wav   4.wav   3.wav   2.wav   1.wav   ,(ESPERAR 25MS)   1.wav  ,(ESPERAR 25MS)   2.wav   .(ESPERAR 50MS)   3.wav   ;(ESPERAR 1S)   4.wav   ;(ESPERAR 1S)   5.wav

Eu primeiramente teria que coletar a 2 sintaxe do comando (123454321,1,2.3;4;5) e depois ler esse código caractere por caractere (Ler 1, depois ler 2, ...) - Mas eu não sei fazer isso!
Eu ACHO que deveria criar um loop que lesse o caractere atual na variável %caractere% e usar um if else pra detectar qual audio (ou qual pausa) que é e ir repetindo até não ter mais caractere - ai quando acontecer isso ele reseta a variavel e dá um echo: Música tocada com sucesso!

Alguém aí pode me ajudar??? Não faço ideia de quais comandos usar, manipulação de texto no CMD não é comigo :(

PS: Em relação ao script de áudio nn precisa incluir, ele já ta pronto - meu script cria um arquivo vbs temporario e executa o audio pelo vbs e dps o vbs se auto destroi - e o audio toca bem rápido

Postado
10 minutos atrás, Felipecconde disse:

Se eu digitar "musica 123454321,1,2.3;4;5" ele deve tocar os audios nessa maneira (por exemplo):


1.wav   2.wav   3.wav   4.wav   5.wav   4.wav   3.wav   2.wav   1.wav   ,(ESPERAR 25MS)   1.wav  ,(ESPERAR 25MS)   2.wav   .(ESPERAR 50MS)   3.wav   ;(ESPERAR 1S)   4.wav   ;(ESPERAR 1S)   5.wav

 

Quando encontra uma virgula esperar 25 ms, quando encontra . esperar 50 MS quando encontra ; esperar 1 Segundo?

 

Exatamente, criar um loop que analisa caractere por caractere...algo parecido com isso:

 

@echo off
SetLocal EnableDelayedExpansion
set Nome=Ricardo Bohner
set Contador=0

:loop
set Letra=!Nome:~%Contador%,1!
echo/ %Letra%
Timeout /t 1 >nul
set /a Contador+=1
IF Defined Letra goto :loop
:EOF

pause

 

cJI7RgO.gif

 

 

 

  • Curtir 1
  • Solução
Postado

Tente algo assim, só que ao invés de echo nos if você manda rodar o vbs...

 

@echo off
SetLocal EnableDelayedExpansion
set "Comando=123454321,1,2.3;4;5"
set Contador=0
echo.

:loop
set caractere=!Comando:~%Contador%,1!
IF "%caractere%"=="1" echo  Executando 1.wav
IF "%caractere%"=="2" echo  Executando 2.wav
IF "%caractere%"=="3" echo  Executando 3.wav
IF "%caractere%"=="4" echo  Executando 4.wav
IF "%caractere%"=="5" echo  Executando 5.wav
IF "%caractere%"=="6" echo  Executando 6.wav
IF "%caractere%"=="7" echo  Executando 7.wav
IF "%caractere%"=="8" echo  Executando 8.wav
IF "%caractere%"=="9" echo  Executando 9.wav
IF "%caractere%"=="," echo  Aguardando 25 MS
IF "%caractere%"=="." echo  Aguardando 50 MS
IF "%caractere%"==";" echo  Aguardando 1 Segundo

Timeout /t 1 >nul
IF Defined caractere set /a Contador+=1 & goto :loop
:EOF
echo.
pause

 

 

Também da para fazer a mesma coisa usando um For /L:

 

@echo off
SetLocal EnableDelayedExpansion
set "Comando=123454321,1,2.3;4;5"
echo.

for /l %%a in (0,1,1000) do (
set caractere=!Comando:~%%a,1!
IF NOT Defined caractere goto :End
IF "!caractere!" == "1" echo  Executando 1.wav
IF "!caractere!" == "2" echo  Executando 2.wav
IF "!caractere!" == "3" echo  Executando 3.wav
IF "!caractere!" == "4" echo  Executando 4.wav
IF "!caractere!" == "5" echo  Executando 5.wav
IF "!caractere!" == "6" echo  Executando 6.wav
IF "!caractere!" == "7" echo  Executando 7.wav
IF "!caractere!" == "8" echo  Executando 8.wav
IF "!caractere!" == "9" echo  Executando 9.wav
IF "!caractere!" == "," echo  Aguardando 25 MS
IF "!caractere!" == "." echo  Aguardando 50 MS
IF "!caractere!" == ";" echo  Aguardando 1 Segundo
Timeout /t 1 >nul
)

:End
pause

 

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...