Batch-Satti
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Batch-Satti

Você não está conectado. Conecte-se ou registre-se

me ajuda com uma duvida sobre variáveis.nível médio, eu acho

3 participantes

Ir para baixo  Mensagem [Página 1 de 1]

b166erbot



kkkkkkkkkkkkkkkk "nivel medio, eu acho" foi proposital

boss, me da uma ajuda..
preciso que meu batch defina uma variável e depois leia o conteúdo dela e depois de certa palavra por exemplo: "do", a próxima seria definida como uma variável

tipo, estou dando um exemplo, se puder reduzir ou melhorar fique a vontade! faça o que der e vier a facilitar e me ajudar  cheers
Código:
set marcascarros=nissan bmw porche mustang
set nissan=350z skyline
rem ou isso acima, ou eu criar um txt como um gigantesco banco de dados contendo tudo o que a de palavras e suas definições para que o bat leia, interprete a pergunta e responda coerente


:inicio
set /p var=pergunte algo para testar:           <--- no caso a pergunta seria tipo: quais sao os nomes dos carros da nissan?


for %%a in (%var%) do (
if %%a==os(as) set var1="a próxima palavra depois de "os" sem aspas"         <-----daqui pra baixo é "do","dos" ou "da","das"
if %%a==do(da,dos/das) set var2="a próxima palavra do %var% sem aspas                  (menos a linha de cima)
if %%a==do(a,os/as) set var3="a próxima palavra do %var% sem aspas
if %%a==do(a,os/as) set var4="a próxima palavra do %var% sem aspas
if %%a==do(a,os/as) set var5="a próxima palavra do %var% sem aspas

rem infinitamente, pode ter 7, 8 ou 100 palavras "do" que a próxima seria definida como uma variável
rem para depois ser usada em outro comando

aqui em cima o bat verificara se a próxima palavra esta definida e tentara interpretar a pergunta, ex:
if "próxima palavra" defined "interpretar a pergunta e definir a variavel resposta como um comando" set resposta=echo (comando echo por exemplo, poderia ser outro, dependendo do que foi perguntado)



observação: tem um comando aqui no site que faz a reformulação de um texto, eu o usei para tirar virgulas, pontos e acentuações, ou seja, averá somente a frase crua, sem virgulas e acentuações


      1    2   3   4     5   6
em: quais sao os carros da nissan
set resposta=3 4 5 6 2: %nissan%


if %var:quais sao os=% neq %var% (
set resposta=%resposta% 3 4 5 6 2: %nissan%
)

%resposta%


aqui iria editar a variavel resposta e depois executa-la, o resultado seria esse:
os carros da nissan sao: 350z skyline

ou seja, não é pra ele falar os nomes dos carros da nissan, é para ele interpretar a pergunta e responder coerente e conclusivo, essa era minha intenção

André Luiz

André Luiz

Bom jovem estava com preguiça de implementar o meu algoritmo ao seu então eu apenas criei um esboço, mas pelo que vi você quer que criar tipo um vetor, pegar todas as partes que tem um do e a próxima mandar para um variável.

Código:
@Echo off
::Texto a ser informado.
Set "Carros=aCarro da Nissan e BMW"
::%Separador% é a palvra chave ele seta a variável depois da variável informada.
Set "Separador=DA"
::%Case% significa que a palavra "DA" que está no %Separador%
::não vai ser interpretado como case-sensitive(Diferencia maiúsculas de minusculas)
::Para mudar isso ou apague essa linha ou então apenas limpe á atribuição.
Set "Case=/I"
:Loop_0
::Loop_0 Necessário caso o da não esteja logo no inicio.
::O "For" seguido do Call Abaixo faz com que ele pegue todas as palavras
::após a primeira palavra e sete na mesma variável %Separador%.
For /f "tokens=2,* delims= " %%a in ("%Carros%") do Call :Reform "%%a %%b"
::Aqui ele vai verificar se precisa ou não procurar por mais algum conteúdo
::que se refere na variável %Separador% que no caso é DA.
If %Case% not "%Carros:~0,2%"=="%Separador%" Goto Loop_0
Echo.%CarrosNew%
Pause>nul & Exit
:Reform
::E essa lógica aqui é exatamente igual a de cima!
Set "Carros=%~1"
If %Case% "%Carros:~0,2%"=="%Separador%" For /f "tokens=2,* delims= " %%i in ("%Carros%") do Set "CarrosNew=%%i %%j"
::Este "exit/b" que usei abaixo serve para volta para o "Call :Reform" algo acima, eu poderia
::Usar apenas um "Goto :eof" para voltar, mas se eu fizesse isto ele não funcionaria como devido.
Exit/b

Bom olha ai eu depois eu volto de novo 'kk fica com Deus e até a próxima....

André Luiz

André Luiz

Não sei se isso vai ajudar cara mas tenta usar o comando setlocal já que você quer criar variáveis dentro de um for, se caso não der certo então mande o seu código limpo sem comentário nem nada o resto eu olho! Razz se for explicar alguma coisa explica fora.

b166erbot



codigo errado, apaguei mensagem :/



Última edição por paranauehuebr em Seg Set 14, 2015 9:45 am, editado 1 vez(es) (Motivo da edição : :/)

b166erbot



a função dele era interpretar qualquer pergunta ou resposta ou até mesmo uma afirmação (no caso da afirmação ele iria debater suas ideias e seu modo de pensar com o usuário) e responder coerente e conclusivo, com isso resolvendo o problema, ou seja, um cérebro robótico funcional no qual qualquer pessoa poderia conversar e tirar suas duvidas, perguntar sua opinião sobre algo para ele e debater qualquer assunto com ele, que ele ira interpretar e responder coerente a pergunta, essa seria minha intenção final com esse bat  Razz.. por favor não riam, do mesmo modo que é engraçado também e muito complexo e difícil de ser produzido, ou seja, do mesmo modo ele também tem seu respectivo respeito  lol!

André Luiz

André Luiz

Olá vida louca dos paranauê 'kkkk
Bom cara agora sim eu entendi o que você quer fazer e você está fazendo do modo errado!
Você quer criar um IA(Inteligência artificial) um ia bom e funcional mesmo não é preciso um banco de dados e sim um algoritmo bom para isso e se você me perguntar como fazer eu digo, não sei!! 'kkk Já tentei é muito difícil, mas se você quiser nós podemos conversar sobre isso em privado meu perfil do facebook está ai me adc e nós nos falamos conheço um cara que criou um IA o Boss criou um com banco de dados e criar um assim é horrível.
Mas eu sei a lógica que você vai precisar para fazer isso só não sei por onde começar o algoritmo, é isso nós podemos debater sobre isso no TGS caso queira entrar no grupo fala a baixo ai!

b166erbot



quero, claro! não sei oq e tgs não mas me poim la também, se for grupo terrorista da alquaeda não me poim não, jesuis.. te mandei solicitação no face, depois adiciona nois (gíria)

Boss-Head

Boss-Head

Código:
@Echo off
Title -=: B©SS-HEAD CHATBOT :=-
:: Visite nosso site http://batch-satti.forumeiros.com
mode con cols=65 lines=9 &color 0A
 
:volta
set /p digita="> "
echo %digita%|find /i "Oi" >nul && echo ola !!
echo %digita%|find /i "Seu nome" >nul && echo Meu nome é boss, e o seu ?
echo %digita%|find /i "Meu nome é" >nul && echo belo nome o seu.
echo %digita%|find /i "Chover" >nul && echo Creio que fará sol.
echo %digita%|find /i "Tchau" >nul && (echo Que pena. Até logo! & goto :eof)
goto :volta

VEJA UM EXEMPLO DE INTERPRETAÇÃO POR PALAVRAS..
CLARO ADEQUE ELE...

DÁ PRA CRIAR UM BANCO DE DADOS SÓ DE PERGUNTAS EX.

Código:
@Echo off
Title -=: B©SS-HEAD CHATBOT :=-
:: Visite nosso site http://batch-satti.forumeiros.com
mode con cols=65 lines=9 &color 0A


:volta
CLS
SET PERG=0
SET ALGUEM=0
SET TRANSP=0


ECHO EXEMPLO 1 QUAL A COR DO CARRO DAQUELA PESSOA
ECHO EXEMPLO 2 QUAL O NOME DELE
ECHO EXEMPLO 3 CARRO DELE BRILHA ?

set /p digita="> "
FOR %%A IN  ( QUAL QUAIS PORQUE AONDE COMO QUEM QUANDO ) DO CALL:VERPER %%A
FOR %%A IN  ( DELE DELA PESSOA AMIGO AMIGA MULHER HOMEM ELE ELA ) DO CALL:VERALGUEM %%A
FOR %%A IN  ( CARRO MOTO AVIAO HELICOPTERO MOTOR LAMBRETA MOBILETE ) DO CALL:VERTRANSP %%A
:: PODE IR ACRESCENTANDO ADJETIVOS OU PALAVROES OU XINGAMENTOS SEI LÁ.
:: FOR %%A IN  ( FEIO BONITO MORENO GATAO CHEIROSO BABACA SUJO ) DO CALL:VERADJET %%A

IF %PERG% EQU 1 ECHO Peguntando sobre
IF %ALGUEM% EQU 1 Echo Alguem
IF %TRANSP% EQU 1 echo relacionado a transportes




PAUSE
GOTO volta

:VERPER
echo %digita%|find /i "%1" >nul && SET PERG=1 & GOTO:EOF
GOTO:EOF


:VERALGUEM
echo %digita%|find /i "%1" >nul && SET ALGUEM=1  & GOTO:EOF
GOTO:EOF

:VERTRANSP
echo %digita%|find /i "%1" >nul && SET TRANSP=1  & GOTO:EOF
GOTO:EOF

Pssn gosta desta mensagem

Boss-Head

Boss-Head

Código:
@Echo off
Title -=: B©SS-HEAD CHATBOT :=-
:: Visite nosso site http://batch-satti.forumeiros.com
mode con cols=65 lines=9 &color 0A


:volta
CLS
SET PERG=0
SET ALGUEM=0
SET TRANSP=0
SET ADJET=0
SET XING=0
SET PESSOA=0
SET BOOT=0
SET AFIRMA=0

ECHO EXEMPLO 1 MEU AMIGO E LEGAL ?
ECHO EXEMPLO 2 VOCE E UM CARA LEGAL ?
ECHO EXEMPLO 3 VOCE E UM CARA LEGAL !

set /p digita="> "

FOR %%A IN  ( QUAL QUAIS PORQUE AONDE COMO QUEM QUANDO ? ) DO CALL:VERPER %%A
FOR %%A IN  ( DELE DELA PESSOA AMIGO AMIGA MULHER HOMEM ELE ELA DAQUELE DAQUELA ) DO CALL:VERALGUEM %%A
FOR %%A IN  ( CARRO MOTO AVIAO HELICOPTERO MOTOR LAMBRETA MOBILETE ) DO CALL:VERTRANSP %%A
FOR %%A IN  ( FEIO BONITO LINDA MORENO GATAO CHEIROSO BABACA SUJO BONITA LINDA GOSTOSA LEGAL ) DO CALL:VERADJET %%A
FOR %%A IN  ( VACA PUTA PIRANHA VIADO CORNO CHIFRUDO VAGABUNDA VAGABUNDO ) DO CALL:VERXING %%A
FOR %%A IN  ( EU MEU MINHA ) DO CALL:VERPESSOA %%A
FOR %%A IN  ( VOCE SEU SUA CHATBOOT ROBO PROGRAMA SCRIPT COMANDO ) DO CALL:VERCHATBOOT %%A


:::: O QUE PODE SER TENTADO É AO VERIFICAR A PERGUNTA ::::
:::: EX. MEU AMIGO É LEGAL ? ::::
:::: EX. VOCE É UM CARA LEGAL ? ::::
:::: VEJA QUE MUDA O CONTEXTO DA RESPOSTA E SOMENTE MUDANDO ALGUMAS PALAVRAS :::::

IF %PERG% EQU 1 ECHO PEGUNTANDO SOBRE
IF %AFIRMA% EQU 1 ECHO AFIRMANDO QUE
IF %ALGUEM% EQU 1 ECHO ALGUEM
IF %TRANSP% EQU 1 ECHO RELACIONADO A TRANSPORTES
IF %ADJET% EQU 1 ECHO RELACIONADO A APARENCIA
IF %XING% EQU 1 ECHO DESCENDO A LENHA NA PESSOA
IF %PESSOA% EQU 1 ECHO DELE PROPRIO
IF %BOOT% EQU 1 ECHO SOBRE MIM

PAUSE
GOTO volta

:VERPER
echo %digita%|find /i "%1" >nul && SET PERG=1
echo %digita%|find /i "?" >nul && SET PERG=1
echo %digita%|find /i "!" >nul && SET AFIRMA=1
GOTO:EOF


:VERALGUEM
echo %digita%|find /i "%1" >nul && SET ALGUEM=1  & GOTO:EOF
GOTO:EOF

:VERTRANSP
echo %digita%|find /i "%1" >nul && SET TRANSP=1  & GOTO:EOF
GOTO:EOF


:VERADJET
echo %digita%|find /i "%1" >nul && SET ADJET=1  & GOTO:EOF
GOTO:EOF


:VERXING
echo %digita%|find /i "%1" >nul && SET XING=1  & GOTO:EOF
GOTO:EOF


:VERPESSOA
echo %digita%|find /i "%1" >nul && SET PESSOA=1  & GOTO:EOF
GOTO:EOF

:VERCHATBOOT
echo %digita%|find /i "%1" >nul && SET BOOT=1  & GOTO:EOF
GOTO:EOF

COLOQUEI DE MODO IGUAL, MAS DIFERENTE. ( DILMESMENTE FALANDO )

Boss-Head

Boss-Head

Código:
@Echo off
Title -=: B©SS-HEAD CHATBATCH :=-
:: Visite nosso site http://batch-satti.forumeiros.com

:inicio
echo.
set /p "pergunta= %username% > : "
rundll32 user32.dll,MessageBeep -1 >nul
echo.
Set ce="http://www.inbot.com.br/cgi-bin/bot_gateway.cgi?server=bot.insite.com.br:8085&charset=text&pure=1&js=1&admi=&msg=%pergunta%"

call:siglas

FOR /F "TOKENS=*" %%A IN ('type question.txt') DO (SET txt=%%A & call:txt)

del /q /s question.txt >nul
goto inicio
:siglas
(
ECHO.function download(sFileURL, sLocation, async^)
ECHO.  set objXMLHTTP = CreateObject("MSXML2.XMLHTTP"^)
ECHO.  objXMLHTTP.open "GET", sFileURL, async
ECHO.  on error resume next
ECHO.  objXMLHTTP.send(^)
ECHO.  if err.number = 0 then
ECHO.    do until objXMLHTTP.Status = 200
ECHO.      wscript.echo objXMLHTTP.Status
ECHO.      wcript.sleep(200^)
ECHO.    loop
ECHO.    if objXMLHTTP.Status = 200 Then
ECHO.      set objADOStream = CreateObject("ADODB.Stream"^)
ECHO.      objADOStream.Open
ECHO.      objADOStream.Type = 1
ECHO.      objADOStream.Write objXMLHTTP.ResponseBody
ECHO.      objADOStream.Position = 0   
ECHO.      set objFSO = Createobject("Scripting.FileSystemObject"^)
ECHO.      If objFSO.Fileexists(sLocation^) Then objFSO.DeleteFile sLocation
ECHO.      Set objFSO = Nothing
ECHO.      objADOStream.SaveToFile sLocation
ECHO.      objADOStream.Close
ECHO.      set objADOStream = Nothing
ECHO.      download = true
ECHO.    end if
ECHO.  else
ECHO.    download = false
ECHO.  end if
ECHO.  set objXMLHTTP = Nothing
ECHO.end function
ECHO.
ECHO.if download(%ce% , "question.txt", false^) then
ECHO.  wscript.echo "download ok"
ECHO.else
ECHO.  wscript.echo "download nok"
ECHO.end if
)>HTML.VBS

Cscript /nologo HTML.VBS >nul
del /s /q HTML.VBS>nul
goto:eof

:txt
set /p =Chatbatch ^> :< nul

(
echo On Error Resume Next
echo dim txt
echo txt="%txt%"
echo for i=1 to len(txt^)
echo  wscript.sleep 70
echo  wscript.StdOut.Write mid(txt,i,1^)
echo next
echo wscript.echo ""
)>ef.vbs
cscript /nologo ef.vbs
del /Q ef.vbs
:beep
(
Echo on error resume next
Echo if val^(wscript.arguments^(0^)^) ^> 0 then
Echo for i = 1 to wscript.arguments^(0^)
Echo wscript.StdOut.Write chr^(7^)
ECHO.WScript.sleep 100
Echo next
Echo else
Echo wscript.Quit
Echo end if
Echo wscrip.quit
)>beep.vbs
Start /min CScript //nologo beep.vbs 1 >nul
goto:eof

tá ai um brinquedinho pra pensar...
façam as perguntas e vejam as respostas

André Luiz

André Luiz

Boa Boss o problema é que odeio o ed 'kkkkkkkk

Assim olha boss para usar o beep no cmd pode fazer isso também
Echo."" (Mesmo que CTRL+G)
A só para constar tem um caracter ai no meio das aspas é porquê por aqui não dá para ser visto mas no cmd dá sim! Very Happy
Se for aberto por um bom editor dá para ver o caractere, no "Bloco de notas" só dá para ver um quadrado.

Pssn gosta desta mensagem

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos