Batch file 使用批处理程序学习

Batch file 使用批处理程序学习,batch-file,machine-learning,artificial-intelligence,neural-network,Batch File,Machine Learning,Artificial Intelligence,Neural Network,我正在批量为我妹妹制作一个聊天机器人,但它占用了我太多的时间,我想我会让它告诉它,当它不知道该说什么的时候。但是我不能让它工作,我想这里可能有人知道。以下是我到目前为止的情况: @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

我正在批量为我妹妹制作一个聊天机器人,但它占用了我太多的时间,我想我会让它告诉它,当它不知道该说什么的时候。但是我不能让它工作,我想这里可能有人知道。以下是我到目前为止的情况:

@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
我遇到麻烦的部分是:

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%时,我该说什么?”。然后用户将键入它,并将其保存为响应。在这之后,一个新的命令将出现在顶部,它会说类似于“if/i”%TALK%=“TALK%”“goto response”。然后它将创建一个新标题:%TALK%echo响应转到开始

下面是一个例子: 用户说你很笨。聊天机器人说:“当你说你愚蠢的时候,你能告诉我该说什么吗?如果用户说是的,那么聊天机器人会说”太好了!当你说你愚蠢的时候,我该说什么?然后用户可以说“你怎么敢这么叫我!” 然后聊天机器人会在顶部发出一个命令,说if/i“%TALK%”==“ur dumby”转到urstupid/ur dumby(与空间无关),并生成标题:urstupid,它会说echo你怎么敢这样叫我!开始


我不知道如何添加响应,以便能够添加另一个单词和响应。我相信用python会更容易些,但由于我刚刚开始学习它,而且我没有任何软件来做,所以我不能。欢迎任何帮助。如果必须用任何其他语言,或者如果另一种语言更容易,那也会有帮助。

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

@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
输出示例:

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!

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

@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
输出示例:

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!

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


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


因为我不知道批处理文件编程,我不知道怎么做,但是,如果你能将语音集成到批处理文件中,就像让它读取东西一样,那就太棒了。echo有一个批处理文件,可以临时创建vbs文件,让他们使用集成的microsoft语音读取输入的任何文本,这是剧本

@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

因为我不知道批处理文件编程,我不知道怎么做,但是,如果你能将语音集成到批处理文件中,就像让它读取东西一样,那就太棒了。echo有一个批处理文件,可以临时创建vbs文件,让他们使用集成的microsoft语音读取输入的任何文本,这是剧本

@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

查看
if/?
,尤其是参数
/i
。“这让生活变得更轻松了。”斯蒂芬谢谢,但那会怎么样呢?我在谷歌和必应上查过它,但我似乎不知道如何批量使用它。抱歉,我是新来的。
if/I
忽略大写字母。因此,与测试yes,yes,yes,yes…,不同的是,您只需要
if/i%ANSW.%==yes
。通过键入命令,然后键入
/?
,可以获得任何命令的帮助
if/?
告诉您有关
if
及其用法的所有信息。@Stephan非常感谢您。这是一个很大的帮助。您可能对以下内容感兴趣:或:查看
if/?
,尤其是参数
/i
。“这让生活变得更轻松了。”斯蒂芬谢谢,但那会怎么样呢?我在谷歌和必应上查过它,但我似乎不知道如何批量使用它。抱歉,我是新来的。
if/I
忽略大写字母。因此,与测试yes,yes,yes,yes…,不同的是,您只需要
if/i%ANSW.%==yes
。通过键入命令,然后键入
/?
,可以获得任何命令的帮助
if/?
告诉您有关
if
及其用法的所有信息。@Stephan非常感谢您。这是一个很大的帮助。您可能对这个:或那个感兴趣:除了询问您键入的内容外,它还具体做了什么?它在批处理文件的末尾添加了一个:标签,带有未知的
%TALK%
(删除空格),后跟
echo%Desc%
exit/b0
。通过这种方式,新标签(子例程)的调用方式可能与任何其他预定义子例程的调用方式相同…酷,我没有看到这一点。虽然我觉得应该说你能告诉我该说什么吗?(y,n)因为我认为这就是它的意思。也可以在“谢谢”后添加按enter键,但我现在唯一能做的是,它是否会将所有内容保存到实际程序中,以便在关闭后可以重新打开它,并且它仍然记得?除了询问您键入的内容外,这到底做了什么?它会在批处理文件的末尾添加一个:标签,带有未知的
%TALK%
(删除空格)然后是
echo%Desc%
exit/b0
。通过这种方式,新标签(子例程)的调用方式可能与任何其他预定义子例程的调用方式相同…酷,我没有看到这一点。虽然我觉得应该说你能告诉我该说什么吗?(y,n)因为我认为这就是它的意思。也可以在谢谢后按回车键,但我能做的只是我现在唯一的问题是它是否保存了所有内容