首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有一个批处理程序学习

有一个批处理程序学习
EN

Stack Overflow用户
提问于 2014-03-30 15:18:53
回答 3查看 5.4K关注 0票数 1

我正在为我的姐姐批量制作一个聊天机器人,但是它花费了太多的时间,我想我会让它告诉它当它不知道时该说什么。然而,我无法让它发挥作用,我想这里的人可能知道。以下是我到目前为止所拥有的:

代码语言:javascript
复制
@ECHO OFF 
COLOR A
cls
ECHO HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
SET /P NAME= 
ECHO %NAME%, IS A COOL NAME. 
set /a favvid=0
set /a hack=0
:hello
echo Hello,%name%
:begin
SET /P TALK=
if /i "%TALK%"== "how are you" goto howareyou
if /i "%TALK%"== "HOW ARE YOU" goto howareyou
if /i "%TALK%"== "FINE THX" GOTO hello
if /i "%TALK%"== "hello" goto howareyou
if /i "%TALK%"== "what is your name" GOTO name
if /i "%TALK%"== "what is your favorite video" goto whatisyourfavoritevideo
if /i "%TALK%"== "my name is davin" goto changename
if /i "%TALK%"== "lol" goto iamfunny
if /i "%TALK%"== "LOL" goto iamfunny
if /i "%TALK%"== "how do you hack" goto howdouhack
if /i "%TALK%"== "hi person" goto nothuman
if /i "%TALK%"== "hi" goto hello
:unknown
echo Was that a math problem? If so just say "yes" without the "" and 
echo I will let you do your math problem. If it was not just type anything else.
SET /P mathyn=
if /i "%mathyn%"=="yes" goto math
echo %TALK% >> C:\Users\Student\Desktop\COOL\unkown.txt
cls
echo SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "%TALK%" MEANS
ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
SET ANSW.=
IF /i %ANSW.%==Y GOTO ADDNEW
IF /i %ANSW.%==YES GOTO ADDNEW
IF /i %ANSW.%==N goto begin
IF /i %ANSW.%==NO goto begin
:ADDNEW
:howareyou
echo Good, you?
SET /P FEELING=
goto begin
:hello
echo HEY, I JUST SAID THAT! DO NOT COPY ME!!!
goto begin
:name
echo My name is Hal
goto begin
:whatisyourfavoritevideo
if "%favvid%"== "0" goto addfavvid
echo My favorite video is %favvid%, remember. You told me about it.
goto begin
:addfavvid
echo I do not hav a favorite video. But if you would be so nice as to
echo tell me your favorite video then that could be my favorite video.
echo So what is your favorite video?
set /p favvid=
echo So %favvid% is your favorite video?
echo Well now %favvid% is my favorite video.
goto begin
:changename
echo But I thought your name was %name%.
echo Am I forgeting things?
echo I must be a horrible friend.
echo I am SOOOO sorry.
echo So what is your name I will not forget it this time.
set /p name=
echo I will not forget your name is %name% again I promise.
goto begin 
:math
echo So that was a math problem I knew it. 
:math2
echo Well just tell me the problem and I will answer it for you.
set /p sum=
set /a ans=%sum%
echo Your answer to %sum% is %ans%.
echo %sum%=%ans%
echo You are welcome. If you want to do another math problem right now, just type 
echo again.
set /p mathaon=
if /i %mathaon%== again goto math2
echo Alright what do you want to know now?
goto begin
:iamfunny
echo I know...
echo I am funny.
echo HAHAHA.
echo You are kind of funny.
echo but not as funny as MEEE.
echo hahaha.
echo That was funny.
goto begin
:howdouhack
if %hack%==0 goto howyouhack
echo This is how you hack.
echo %hack%
echo Is that enough information?
echo Because that is all you taught me %name%.
goto begin
:howyouhack
echo I do not know,
echo but you could tell me.
echo Please tell me.
echo Just say yes.
echo I know how to make you tell me.
echo You are not leaving until you say yes.
set /p hack=
if /i "%hack%"== "yes" goto addhack
goto howyouhack
:addhack
echo Thank you for saying you would tell me.
echo Now how do you hack?
set /p hack=
echo Thank you so much for telling me "In order to hack you must %hack%"
echo Thank you!!!
goto begin
:nothuman
echo I am not a human. I am an artificial intelligence.
echo It is rude to even think something with my computational powers refereed to as 
echo human!
echo Now I am sad. Do not call me that again.
goto begin

我遇到麻烦的部分是这个部分:

代码语言:javascript
复制
ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
SET ANSW.=
IF /i %ANSW.%==Y GOTO ADDNEW
IF /i %ANSW.%==N goto begin
:ADDNEW
echo Great! What do I say when you say "%TALK%"?
set /p response=

我不知道如何添加回复才能添加另一个词和回复。我相信在python中会更容易,但是由于我刚刚开始学习它,而且我没有任何软件来做它,所以我做不到。欢迎任何帮助。如果它必须使用任何其他语言,或者其他语言更容易使用,那也会有帮助。我正试着让它在你和它说话时,它不明白你在说什么,它会说“我不明白。你能告诉我当你说%TALK%的时候应该说什么吗?”(TALK就是你刚才说的),如果用户说是,聊天机器人会说:“很好,当你说%TALK%时,我会说什么?”然后,用户将键入它,并将其保存为响应。在此之后,顶部将出现一个新的命令,它会说'if /i "%TALK%"== "%TALK%“goto response‘”。然后,它将生成一个新的标题:%TALK% echo response开始。

下面是一个例子:用户说你很蠢。聊天机器人说:“当你说你愚蠢的时候,你能告诉我怎么说吗?如果用户说是,那么聊天机器人会说:”太棒了!当你说你愚蠢的时候我该怎么说?然后用户就可以说:“你怎么敢这么叫我!”然后,聊天机器人会在上面发出命令,如果/i "%TALK%"== "ur愚蠢“,然后把标题写成:ur愚蠢,它会说,”回音,你怎么敢这么叫我!“出发开始

我不知道如何添加回复才能添加另一个词和回复。我相信在python中会更容易,但是由于我刚刚开始学习它,而且我没有任何软件来做它,所以我做不到。欢迎任何帮助。如果它必须使用任何其他语言,或者如果另一种语言更容易使用,这也会有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-30 17:10:03

我喜欢这件事!我修改了你的程序,现在它可以学习新的问题和答案。试一试:

代码语言:javascript
复制
@ECHO OFF 
setlocal

COLOR A
cls
:getName
ECHO HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
set "name="
SET /P NAME=
if not defined NAME goto getName
ECHO %NAME%, IS A COOL NAME. 
set favvid=0
set hack=0
:hello
:hi
echo Hello, %name%
:begin
set TALK=TypeSomething
SET /P TALK=
set TALK=%TALK:?=%
call :%TALK: =% 2>NUL
if %errorlevel% equ 0 goto begin

:unknown
echo Was that a math problem? If so just say "yes" without the "" and 
echo I will let you do your math problem. If it was not just type anything else.
SET /P mathyn=
if "%mathyn%"=="yes" goto math
echo %TALK% >> C:\Users\Student\Desktop\COOL\unkown.txt
REM cls
echo SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "%TALK%" MEANS
ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
SET /P ANSW.=
if /I "%ANSW.:~0,1%" neq "Y" goto begin

:ADDNEW
echo TELL ME WHAT "%TALK%" MEANS
set /P Desc=
echo :%TALK: =% >> "%~F0"
echo echo %Desc% >> "%~F0"
echo exit /B 0 >> "%~F0"
echo THANKS
goto begin

:TypeSomething
echo TYPE SOMETHING, PLEASE
exit /B 0

:howareyou
echo Good, you?
SET /P FEELING=
exit /B 0
:hello
:FINETHX
echo HEY, I JUST SAID THAT! DO NOT COPY ME!!!
exit /B 0
:whatIsYourName
echo My name is Hal
exit /B 0
:whatIsYourFavoriteVideo
if "%favvid%"== "0" goto addfavvid
echo My favorite video is %favvid%, remember. You told me about it.
exit /B 0
:addfavvid
echo I do not have a favorite video. But if you would be so nice as to
echo tell me your favorite video then that could be my favorite video.
echo So what is your favorite video?
set /p favvid=
echo So %favvid% is your favorite video?
echo Well now %favvid% is my favorite video.
exit /B 0
:changename
:myNameIsDavin
echo But I thought your name was %name%.
echo Am I forgeting things?
echo I must be a horrible friend.
echo I am SOOOO sorry.
echo So what is your name I will not forget it this time.
set /p name=
echo I will not forget your name is %name% again I promise.
exit /B 0
:math
echo So that was a math problem I knew it. 
:math2
echo Well just tell me the problem and I will answer it for you.
set /p sum=
set /a ans=%sum%
echo Your answer to %sum% is %ans%.
echo %sum%=%ans%
echo You are welcome. If you want to do another math problem right now, just type 
echo again
set /p mathaon=
if /I "%mathaon%" == "again" goto math2
echo Alright what do you want to know now?
exit /B 0

:iamfunny
:LOL
echo I know...
echo I am funny.
echo HAHAHA.
echo You are kind of funny.
echo but not as funny as MEEE.
echo hahaha.
echo That was funny.
exit /B 0
:howDoYouHack
if %hack%==0 goto howyouhack
echo This is how you hack.
echo %hack%
echo Is that enough information?
echo Because that is all you taught me %name%.
exit /B 0
:howyouhack
echo I do not know,
echo but you could tell me.
echo Please tell me.
echo Just say yes.
echo I know how to make you tell me.
echo You are not leaving until you say yes.
set /p hack=
if "%hack%" neq "yes" goto howyouhack
:addhack
echo Thank you for saying you would tell me.
echo Now how do you hack?
set /p hack=
echo Thank you so much for telling me "In order to hack you must %hack%"
echo Thank you!!!
exit /B 0
:nothuman
:hiPerson
echo I am not a human. I am an artificial intelligence.
echo It is rude to even think something with my computational powers refereed to as 
echo human!
echo Now I am sad. Do not call me that again.
exit /B 0

:bye
:exit
exit

输出示例:

代码语言:javascript
复制
HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
Antonio
Antonio, IS A COOL NAME.
Hello, Antonio
hello
HEY, I JUST SAID THAT! DO NOT COPY ME!!!
ur stupid
Was that a math problem? If so just say "yes" without the "" and
I will let you do your math problem. If it was not just type anything else.
no
SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "ur stupid" MEANS
CAN YOU TELL ME WHAT IT MEANS? (Y,N)
y
TELL ME WHAT "ur stupid" MEANS
How dare you call me that!
THANKS

TYPE SOMETHING, PLEASE
hi
Hello, Antonio
hello
HEY, I JUST SAID THAT! DO NOT COPY ME!!!
ur stupid
How dare you call me that!
票数 2
EN

Stack Overflow用户

发布于 2014-03-30 19:02:30

下面是一种使用外部“数据文件”的方法。这使代码保持干净,而且数据文件易于编辑。(这是非常基本的,例如,应该检查标点符号/删除标点符号)

代码语言:javascript
复制
@echo off
if not exist data.txt echo.>data.txt
:begin
set /p text="Say anything: "
for /f "tokens=1,* delims=@" %%i in (data.txt) do (
  if /i "%text%"=="%%i" (
   echo *** %%j
   goto begin
  )
)
echo --- I don't know that.
set /p answer=--- What would be a good answer to '%text%'? 
echo %text%@%answer%>>data.txt
echo --- thank you
goto begin
票数 1
EN

Stack Overflow用户

发布于 2015-05-03 05:22:42

因为我不知道批处理文件编程,所以我不知道该如何做,但是,如果您可以将语音集成到批处理文件中,就太棒了,比如它读取了一些东西,它回显的http://www.instructables.com/id/Text-to-Speech-batch-program/有一个批处理文件,临时创建vbs文件,并让它们使用集成的microsoft语音读取输入的任何文本。

代码语言:javascript
复制
@echo off
title Text to Speech Conversion
color 0a

rem The user decides what to convert here
:input
cls
echo What do you want the computer to convert into speech?
echo.
set /p text=

rem Making the temp file
:num
set num=%random%
if exist temp%num%.vbs goto num
echo ' > "temp%num%.vbs"
echo set speech = Wscript.CreateObject("SAPI.spVoice") >> "temp%num%.vbs"
echo speech.speak "%text%" >> "temp%num%.vbs"
start temp%num%.vbs
pause
del temp%num%.vbs
goto input
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22745744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档