[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]如何用批处理实现手机与电脑的互动通信?

一直想弄个手机和电脑互动的东东,可能力有限,发个帖,大家一起来研究研究吧。
       大概构思是这样的,出门的时候忘记关电脑了,但最近三天可能不回家,想通过手机发送一条指令给电脑,说,电脑,我不回家,你关机睡觉吧。批处理如何实现此功能?
       电脑和电脑之间可以通过浏览器、聊天工具等方式通信,手机和手机之间可以通过手机号码通信。手机和电脑之间通过什么方式通信呢?
       1、飞信:可以在电脑上发送免费短信,也可以在智能手机上安装飞信。
       2、QQ:电脑和手机上的QQ都已经很普及了。
       3、邮件:现在手机同样很轻松的就可以接收邮件。
       以上是三种常见的手机和电脑的通信方式,可见,手机和电脑之间的通信已经大概的有了一个基础,那么,我们的批处理能够在中间扮演什么角色呢?
       飞信命令行版、QQ命令行版、邮件命令行版我都找到了。飞信命令行版给我弄丢失了,可以再找。QQ命令行版可以用,但似乎它和官方版本的一样是独立的,需要手工操作,批处理无法“嵌入”它的程序里面(可能我的能力有限),因此无法预先设定QQ号码和密码,无法导入和导出通信内容。命令行版的邮件我用的是blat.exe,但目前我只弄懂发送邮件,无法搞清楚怎么接收邮件。
        以邮件作为媒介连通电脑和手机(智能机),在电脑上批处理配合blat可以发送邮件。比如,我用手机发送邮件给电脑“电脑,执行关机”——转换成代码:Dear007,shutdown -s。电脑开机一直执行一个批处理,专门用来监控邮箱,当其接收到命令“Dear007,shuodown -s”时,分析dear007为电脑名称,“shutdown -s”为执行命令,接收到命令后,批处理首先自动回复一封邮件给手机,“收到!马上执行!”,并于一分钟后开始执行关机命令。
         整个过程,需要一个监控邮箱的P,需要实现接收和分析邮件的P,需要发送邮件的P,需要执行命令的P。发送邮件的P已经可以实现,但接收和分析的P我还没搞定,目前没有具体的头绪,想请教众位高手,接受和分析邮件具体如何实现?最好具有很强的可操作性,代码也得,工具也得,发一点出来,大家一起完成这个有趣的试验,让批处理也实现智能化!~
_______________________________________________________________________________________
经过努力,这个想法终于曲折地得到解决,虽然不是很理想,但终告一段落。其实提取新邮件只用一个move就好了,原本很简单的,后面个我弄得很复杂了,只是为了实现更多功能而已。

现在终于可以躺在床上,用手机发送短信给电脑,告诉电脑“batbot001”我想听听音乐,于是通过手机用邮箱发送标题为【start "" "%ProgramFiles%\TTPlayer\TTPlayer.exe"】的邮件到另外一个邮箱,而那个邮箱被设置在电脑的outlook中,通过这个工具,电脑收到邮件,并提取命令来执行。困了,要睡觉了,我又拿我的C750发送指令【shutdown -s -t 0】给电脑,一两分钟后,电脑自动关机。嘿嘿,把手机当遥控器使用了!~

当然,我的邮箱有几十个,你就别动歪脑筋打听我的outlook使用的邮箱地址了,因为batbot001是属于我的。

代码在17、18楼,由于太长了被拆成了两段,可怜我的batbot001~!~
20100311,做了升级,OEInboxtool v4.4(通用简化版).bat,比先前贴出来的顺眼多了,已经比较完善了!~

代码就不贴出来了,看附件。
使用方法介绍在25楼!~
本篇为原创,转载请注明出处。 http://hi.baidu.com/cjiabing     甲兵时代,为你服务。

用Outlook Express可以接受邮件,并能转换为TXT让批处理执行,但在从收件箱转换为TXT过程中存在大量NUL(空值?)影响命令提取,成功近在咫尺,请求各位大侠支援一下,如何处理文本中这些特殊的,无法复制,的家伙?

TOP

呵呵,那个太复杂了,我直接findstr到要点,现在得到以下信息:
Subject: =?gb2312?B?u7bTrcq508MgT3V0bG9vayBFeHByZXNzIDY=?=
Subject: =?gbk?B?u/rG98jL?=
Subject: 个人简历账户通知
Subject: =?gbk?B?xOO6w6OsztLKx8X6tKbA7Q==?=
Subject: dear007:dir c:\
Subject: =?gbk?B?Y3Nib3QgZWNobyDO0srHt7S/1r6r06I=?=
Subject: =?gbk?B?Y3Nib3QgY3Nib3QgZWNobyC57SUwIGNzYm90?=
Subject: =?gbk?B?16q3oqO6UmU6IGRlYXIwNzogZWNobyDO0srHu/o=?=
Subject: =?gbk?B?ZGVhcjA3OiBlY2hvIM7Syse7+sb3yMtkZWFyMDA3?=
要用base64解码,没有成功使用过,随风兄给个方案啊?不要手工的,最好直接P的base64。
如果无法解码,请把“=?gbk?B?”删掉,“Subject: ”不在解码范围内。

TOP

谢谢大家支持,现在也差不多了。其实手机和电脑之间最基本的还是网页,我现在只能采用邮箱的方式了,并且结果也差不多了。只是还需要个别地方完善。下面把这几天的结果贴出来吧,否则大家笑我讲故事了。担心一个问题,就是如果被黑客或者病毒制造者拿了去会导致什么问题?怕怕!~@

::修改了之后,斜杠被屏蔽,输入地址路径时记得加双引号。昨晚我用“for /r  c:\   %%i  in  (ttplayer.exe)  do  if exist   "%%i"  start  "”做标题发送了一封邮件,程序接收到了并成功执行,我用千千静听设置了自动关机,最后电脑自己关机了。我的at没开。还有待继续完善。

[ 本帖最后由 cjiabing 于 2010-3-8 18:28 编辑 ]

TOP

Outlook Express和base64我就不提供了。Outlook Express一般系统自带,需要自己设置邮箱,主要是利用了它能够自动接收邮件(设置一分钟下载一次),以及它的收件箱dbx文件据说是表格形式的,用电子表格打开看还是看到大概模样的,但用记事本一样可以处理。记事本打开后会出现一大堆NUL,无意中用for来剔除了。本工具只提取标题,内容比较复杂,还要解码。标题也需要解码,有些无法解码成功。
       工具设置思路可能也存在不足,弄了两三天,废寝忘食,头晕脑胀了,有空再修改。现在主要问题就是最后的文件比较,主要作用就是看是不是新邮件,但在提取不同邮件的地方,findstr遇到了问题,就是双引号和斜杠无法通过,用for替换,无奈for无法将其用作分隔符。看看各位仁兄有好办法指点一下,我忙着上班暂时没空思考了。
       这个工具现在只是提取邮件,如果把copy换成move或许更好,因为dbx可以自动再生。有空再把命令的判断和邮件的发送等程序补上,到时候就可以通过发邮件来控制电脑了。至于手机,只是另外一台移动的比笔记本轻点的电脑而已,特别是对于智能手机来说,简直小菜一碟,我用dopod的C750,哈哈,有空大家交流下智能机。
       谢谢各位超级版主,我一直在偷偷学你们的技术啊!~哈哈,各位都是“师级”人物,我们能学到的是技术,难以学到的则是你们超越一切的思想和经验。

[ 本帖最后由 cjiabing 于 2010-3-4 22:54 编辑 ]

TOP

说明下临时文件:
moldmailsave.txt(oldmailsave.txt)   旧邮件或者整理过后的旧邮件。
newmailsave.txt    新邮件或者收件箱中所有邮件。
noreadnewmail.txt   未读新邮件,上面两个文件比较(两者取异)后得到的结果。
现在代码可能问题,当邮件中含有   \    ""   等符号时比较无法进行下去,程序停住。哪个帮解决下  findstr "\"" 或者 delims="\     。
把Outlook Express的收件箱dbx都用txt解决掉了,不知道Outlook Express会不会唧唧歪歪!~  :p

TOP

这个问题我也想过,但是能输入命令的限制太多,没有这样自由,当然,可以设置一下,既可以自由输入命令,也可以直接用编号。

前几天我在考虑弄个智能机器人的时候也是这么想的,先设置好一个命令文本,当你和机器说话的时候让机器分析你说的话语,从中提取关键词来搜索命令文本,让其自动执行。

昨晚又鼓捣了一通,屏蔽了反斜杠,输入地址路径时记得加双引号。我用“for /r  c:\   %%i  in  (ttplayer.exe)  do  if exist   "%%i"  start  "”做标题发送了一封邮件,程序接收到了并成功执行,我用千千静听设置了自动关机,最后电脑自己关机了。我的at没开。

还有许多地方继续完善,比如临时文件凌乱,没能正确提取新邮件,没有达到既定目的,再生程序遇到问题没有自动退出窗口,还没设置命令判断程序,无法区分邮件是命令还是非命令。

[ 本帖最后由 cjiabing 于 2010-3-5 12:31 编辑 ]

TOP

代码有点长,分作两段了。
代码一:
  1. @echo off&setlocal enabledelayedexpansion
  2. title OE收件箱监控与主题提取工具
  3. echo.
  4. echo.
  5. echo.
  6. echo                          OE收件箱监控与主题提取工具
  7. echo                                  设置选项
  8. echo                              by cjiabing   cmd@xp
  9. echo.
  10. echo.
  11. echo        时间控制:设置程序自动循环的时间。默认是300(约5分钟)。
  12. set /p timec=       时间设置:
  13. if defined timec (goto set) else (set timec=300)
  14. :set
  15. echo.&set /p email=       是否设置自动发送邮件?(y/n)
  16. if %email%==y call :mail
  17. echo.&echo        执行程序:添加随程序执行的程序。默认是执行收件指令的batbot001.bat。
  18. set /p Performer=       程序设置:
  19. if defined Performer (goto set1) else (goto set2)
  20. exit
  21. :set1
  22. setlocal enabledelayedexpansion
  23. set rdm=%random%
  24. for /f "skip=48 tokens=*" %%a in ('type %0') do echo %%a>>OETool^!rdm^!.bat
  25. echo start ^"^"  batbot001^.bat>>OETool^!rdm^!.bat
  26. echo start ^"^"  %Performer%>>OETool^!rdm^!.bat
  27. echo ping ^/n 5 127^.0^.1^>nul>>OETool^!rdm^!.bat
  28. echo goto ^:eof>>OETool^!rdm^!.bat
  29. echo.&echo        退出设置并开始执行程序&pause>nul
  30. start "" OETool^!rdm^!.bat&exit
  31. :set2
  32. setlocal enabledelayedexpansion
  33. set rdm=%random%
  34. for /f "skip=48 tokens=*" %%a in ('type %0') do echo %%a>>OETool^!rdm^!.bat
  35. echo start ^"^"  batbot001^.bat>>OETool^!rdm^!.bat
  36. echo ping ^/n 5 127^.0^.1^>nul>>OETool^!rdm^!.bat
  37. echo goto ^:eof>>OETool^!rdm^!.bat
  38. echo.&echo        退出设置并开始执行程序&pause>nul
  39. start "" OETool^!rdm^!.bat&exit
  40. :mail
  41. echo.&echo        发件设置:设置程序自动发送邮件。默认不发送。
  42. set /p smtp=       SMTP/POP3(如:smtp.qq.com):
  43. set /p sender=       发送邮箱地址(如:cjiabing@qq.com):
  44. set /p recive=       接收邮箱地址(如:cjiabing@qq.com):
  45. set /p pword=       发件邮箱密码(如:123456):
  46. set /p subj=       邮件标题(如:cjiabing@qq.com):
  47. set /p cont=       邮件内容文本路径:(如:C:\body.txt)
  48. goto :eof
  49. @echo off&setlocal enabledelayedexpansion
  50. call :prsk
  51. :start
  52. echo.
  53. echo.
  54. echo                          OEInboxtool  V3.1(通用版)
  55. echo                              by cjiabing   cmd@xp
  56. echo.
  57. echo.
  58. echo.
  59. echo     ※本工具需要Outlook Express、base64、blat等第三方工具支持。
  60. echo     ※请事先设置好Outlook Express邮箱,默认是三十分钟接收一次邮件。
  61. echo     ※用另外一个邮箱的标题(主题)发送命令,命令中含有特殊符号的需要在前面添加转义符^^。
  62. echo     ※如【shutdown -s -t 3000】、【start "" "%ProgramFiles%\TTPlayer\TTPlayer.exe" 】
  63. echo     ※工具只识别标题,不识别内容,且标题的字数和格式受限。建议按照标准程式发件。
  64. echo     ※工具尚在测试期,发送del之类的命令时需三思而后行。禁止用于非法目的和行为。
  65. echo.
  66. echo.
  67. ping /n 5 127.0.1>nul
  68. call :try
  69. set jici=0
  70. :loop
  71. set /a jici+=1
  72. ping /n ^!timec^!  127.0.1>nul
  73. echo.
  74. echo                             ——开始第“%jici%”轮任——
  75. echo.
  76. call :sub
  77. if %jici%==1  if exist Readmessages.txt type Readmessages.txt>>Readmessageslog.txt&del Readmessages.txt
  78. if exist Readmessages.txt  (
  79. call :old
  80. call :fct
  81. call :bbot
  82. )
  83. echo.
  84. if not exist  Readmessages.txt  call :bbot1
  85. IF errorlevel 0  (echo             【第“%jici%”轮任务完成,将重新开始任务,退出请直接关闭】) else (echo no^!^!)
  86. echo.
  87. echo ——————————————————————————————————————
  88. if %jici% lss 13 goto loop
  89. taskkill /f /t /im msimn.exe
  90. call send
  91. call :prsk
  92. goto new
  93. del %0 /f /q
  94. exit
  95. :try
  96. if  exist "%ProgramFiles%\Outlook Express\msimn.exe" start "" "%ProgramFiles%\Outlook Express\msimn.exe"
  97. ping /n 10 127.0.1>nul
  98. echo.
  99. echo                             ……初始检测……
  100. if not exist "%ProgramFiles%\Outlook Express\msimn.exe" echo     对不起,找不到你的Outlook Express程序!&ping /n 5 127.0.1>nul&exit
  101. if not exist base64.exe echo     对不起,找不到你的base64.exe程序!&ping /n 5 127.0.1>nul&exit
  102. if not exist "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx" echo     对不起,找不到Outlook Express的收件箱!&ping /n 5 127.0.1>nul&exit
  103. start "" "%ProgramFiles%\Outlook Express\msimn.exe"
  104. IF errorlevel 0  echo                             ……初始检测……ok
  105. ping /n 5 127.0.1>nul
  106. goto :eof
  107. :sub
  108. if  exist "%ProgramFiles%\Outlook Express\msimn.exe" start "" "%ProgramFiles%\Outlook Express\msimn.exe"&ping /n 30 127.0.1>nul
  109. if %jici%==1  taskkill /f /t /im msimn.exe
  110. ping /n 5 127.0.1>nul
  111. echo.
  112. echo                             ……提取邮箱信息……
  113. del 收件箱.dbx,firstinbox.txt,editinbox.txt,subjectr.txt>nul 2>nul 1>nul
  114. if %jici%==1  (move "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx"   %cd%) else (copy "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx"   %cd%)
  115. ren %cd%\收件箱.dbx  firstinbox.txt
  116. for /f "tokens=*" %%a  in ('type firstinbox.txt') do echo %%a>>editinbox.txt
  117. for /f "tokens=2*" %%a in ('findstr /i /b "Subject" editinbox.txt') do echo %%a %%b>>subjectr.txt
  118. del firstinbox.txt,editinbox.txt
  119. if not exist subjectr.txt echo 收件箱没有邮件 &goto :eof
  120. echo.>newitems.txt
  121. findstr /v "^=?gbk?B?" subjectr.txt>>newitems.txt
  122. setlocal enabledelayedexpansion
  123. set numt1=0
  124. findstr  "^=?gbk?B?" subjectr.txt>nul
  125. IF errorlevel 0 goto gbkb
  126. goto :eof
  127. :gbkb
  128. for /f "tokens=*" %%i in ('findstr  "^=?gbk?B?" subjectr.txt') do (
  129. set /a numt1+=1
  130. echo ^!numt1^!>nul
  131. set fjmmd=%%i&echo ^!fjmmd^:^~8^,400^!^>subjectrjm1^!numt1^!^.txt
  132. base64 -d -i subjectrjm1^!numt1^!^.txt -o subjectrjm2^!numt1^!^.txt
  133. for /f "tokens=*" %%x in (subjectrjm2^!numt1^!^.txt) do echo %%x>>newitems.txt
  134. del subjectrjm2^!numt1^!.txt,subjectrjm1^!numt1^!^.txt
  135. )
  136. del subjectr.txt
  137. IF errorlevel 0  (echo                             ……提取邮件与邮件解码……ok) else (echo no^!^!)
  138. ping /n 5 127.0.1>nul
  139. goto :eof
复制代码

TOP

代码二:
  1. :old
  2. echo                             ……整理邮件……
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (Readmessages.txt) do (
  5. set jjd=%%a
  6. if defined jjd (goto old2) else (echo echo nul>mReadmessages.txt&goto old3)
  7. )
  8. goto old3
  9. :old2
  10. echo.>mReadmessages.txt
  11. for /f "delims=" %%a in ('sort Readmessages.txt') do (
  12. set cav=%%a
  13. if not ^!cav^! equ ^!vb^! echo ^!cav^!>>mReadmessages.txt
  14. set vb=%%a
  15. )
  16. del Readmessages.txt
  17. :old3
  18. echo.>mnewitems.txt
  19. for /f "delims=" %%a in ('sort newitems.txt') do (
  20. set xav=%%a
  21. if not ^!xav^! equ ^!vbm^! echo ^!xav^!>>mnewitems.txt
  22. set vbm=%%a
  23. )
  24. del newitems.txt
  25. IF errorlevel 0  (echo                             ……整理邮件……ok) else (echo no^!^!)
  26. ping /n 5 127.0.1>nul
  27. goto :eof
  28. :fct
  29. echo                             ……提取未读新邮件……
  30. cd.>mUnreadMail.txt
  31. @echo off&setlocal enabledelayedexpansion
  32. for /f "tokens=*" %%a in (mReadmessages.txt) do (
  33. set 1var=%%a
  34. for /f "tokens=*" %%i in (mnewitems.txt) do set 2var=%%i
  35. if not ^!2var^!==^!1var^! echo ^!2var^!>>mUnreadMail.txt
  36. IF errorlevel  0  (echo ok) else (echo Failure)
  37. )
  38. echo.>UnreadMail.txt
  39. for /f "delims=" %%a in ('sort mUnreadMail.txt') do (
  40. set xae=%%a
  41. if not ^!xae^! equ ^!vbn^! echo ^!xae^!>>UnreadMail.txt
  42. set vbn=%%a
  43. )
  44. del mUnreadMail.txt
  45. if exist mnewitems.txt ren mnewitems.txt newitems.txt
  46. if exist mReadmessages.txt ren mReadmessages.txt Readmessages.txt
  47. if exist UnreadMail.txt type UnreadMail.txt>>Readmessages.txt
  48. type Readmessages.txt>>Readmessageslog.txt
  49. IF errorlevel 0  (echo                             ……提取新的未读邮件……ok) else (echo no^!^!)
  50. echo.
  51. ping /n 5 127.0.1>nul
  52. goto :eof
  53. :send
  54. echo.
  55. echo                             ……发送邮件……
  56. echo    请事先设置一个文本文件,把信件内容写入,再设置路径。你可以使用txt被动发件,也可以通过命令使用bat发件。
  57. ::call "%ProgramFiles%\WinRAR\RAR.exe"  a  "%userprofile%\桌面\123456.rar"  npslist.txt pslist.txt runn.txt runr.txt
  58. cd !cd!
  59. blat -install !smtp!  !sender!
  60. blat  !cont!  -to !recive!  -u  !sender!   -base64 -charset Gb2312 -pw !pword!  -subject  !subj!
  61. ::-attach
  62. IF errorlevel 0  (echo                             ……发送邮件……ok) else (echo no^!^!)
  63. echo.
  64. ping /n 5 127.0.1>nul
  65. goto :eof
  66. :prsk
  67. echo ^!%0^!
  68. title ^!%0^!
  69. cd.>prstkill.txt
  70. for /f "usebackq skip=3 tokens=2" %%p in (`tasklist /fi "windowtitle eq ^!%0^!"`) do set prs2=%%p
  71. for /f "usebackq skip=1 delims=" %%p in (`"wmic process where(name="cmd.exe") get ProcessId"`) do (
  72. echo %%p |findstr /v "^!prs2^!">>prstkill.txt
  73. )
  74. for /f %%a in (prstkill.txt) do taskkill /f /t /pid %%a
  75. del prstkill.txt
  76. ping /n 5 127.0.1>nul
  77. goto start
  78. :new
  79. title ^!^%0^!
  80. echo                             ……程序再生……
  81. echo.
  82. echo                    本程序任务完成,自动打开程序副本继续任务!
  83. echo.
  84. set numc=%random%
  85. copy %0 %cd%\outlooktool%numc%.bat
  86. start "" %cd%\outlooktool%numc%.bat
  87. goto :eof
  88. :bbot1
  89. ren newitems.txt  Readmessages.txt
  90. echo @echo off>batbot001.bat
  91. for /f "tokens=*" %%a in (Readmessages.txt) do echo %%a>>batbot001.bat
  92. echo ping /n 10 127.0.1^>nul>>batbot001.bat
  93. echo exit>>batbot001.bat
  94. echo start ^"^"  batbot001^.bat>>OETool^!rdm^!.bat
  95. echo if exist %Performer% start ^"^"  %Performer%>>OETool^!rdm^!.bat
  96. echo ping ^/n 5 127^.0^.1^>nul>>OETool^!rdm^!.bat
  97. echo goto ^:eof>>OETool^!rdm^!.bat
  98. goto :eof
  99. :bbot
  100. echo @echo off>batbot001.bat
  101. if exist UnreadMail.txt for /f "tokens=*" %%a in (UnreadMail.txt) do echo %%a>>batbot001.bat
  102. echo ping /n 10 127.0.1^>nul>>batbot001.bat
  103. echo exit>>batbot001.bat
复制代码

TOP

不懂VBS,不过学习下,你是那个什么风?

OE收件箱监控与主题提取工具=OEInboxtool V4.4(通用版)


  1. @echo off&setlocal enabledelayedexpansion
  2. title OE收件箱监控与主题提取工具
  3. echo.
  4. echo.
  5. echo.
  6. echo                            OE收件箱监控与主题提取工具
  7. echo                                    设置选项
  8. echo                              by cjiabing   cmd@xp
  9. echo.
  10. echo.
  11. echo        时间控制:设置程序自动循环的时间。默认是60(约2分钟)。
  12. set /p timec=       时间设置:
  13. if defined timec (goto set) else (set timec=60)
  14. :set
  15. echo.&set /p email=       是否设置自动发送邮件?默认不设置。(y/n):
  16. if %email%==y (call :mail) else (set cmail=echo 不发送邮件)
  17. echo.&echo        执行程序:添加随程序执行的程序。默认是执行收件指令的batbot001.bat。
  18. set /p Performer=       程序设置:
  19. if defined Performer (goto set1) else (goto set2)
  20. exit
  21. :set1
  22. setlocal enabledelayedexpansion
  23. set rdm=%random%
  24. for /f "skip=49 tokens=*" %%a in ('type %0') do echo %%a>>OETool^!rdm^!.bat
  25. echo start ^"^" batbot001^.bat>>OETool^!rdm^!.bat
  26. echo start ^"^" %Performer%>>OETool^!rdm^!.bat
  27. echo ping ^/n 5 127^.0^.1^>nul>>OETool^!rdm^!.bat
  28. echo goto ^:eof>>OETool^!rdm^!.bat
  29. echo.&echo        退出设置并开始执行程序&pause>nul
  30. start "" OETool^!rdm^!.bat&exit
  31. :set2
  32. setlocal enabledelayedexpansion
  33. set rdm=%random%
  34. for /f "skip=49 tokens=*" %%a in ('type %0') do echo %%a>>OETool^!rdm^!.bat
  35. echo start ^"^" batbot001^.bat>>OETool^!rdm^!.bat
  36. echo ping ^/n 5 127^.0^.1^>nul>>OETool^!rdm^!.bat
  37. echo goto ^:eof>>OETool^!rdm^!.bat
  38. echo.&echo        退出设置并开始执行程序&pause>nul
  39. start "" OETool^!rdm^!.bat&exit
  40. :mail
  41. set cmail=call :send
  42. echo.&echo        发件设置:设置程序自动发送邮件。默认不发送。
  43. set /p smtp=       SMTP/POP3(如:smtp.qq.com):
  44. set /p sender=       发送邮箱地址(如:cjiabing@qq.com):
  45. set /p recive=       接收邮箱地址(如:cjiabing@qq.com):
  46. set /p pword=       发件邮箱密码(如:123456):
  47. set /p subj=       邮件标题(如:cjiabing@qq.com):
  48. set /p cont=       邮件内容文本路径:(如:C:\body.txt)
  49. goto :eof
  50. @echo off&setlocal enabledelayedexpansion
  51. title OEInboxtool V4.4(通用版)
  52. :start
  53. echo.
  54. echo.
  55. echo                            OEInboxtool V4.4(通用版)
  56. echo                              by cjiabing   cmd@xp
  57. echo.
  58. echo.
  59. echo.
  60. echo             ※需Outlook Express、base64、blat等第三方工具支持。
  61. echo             ※Outlook Express邮箱设置为每隔一分钟检查一次新邮件。
  62. echo             ※用另外一个邮箱按照标准程式给Outlook Express发邮件。
  63. echo             ※只识别标题,不识别内容,且标题的字数和格式受限。
  64. echo             ※如发送标题是“shutdown -s -t 0”将使你电脑自动关机。
  65. echo             ※使用须自担责任,禁止用于非法目的和行为。
  66. echo.
  67. echo.
  68. ping /n 5 127.0.1>nul
  69. call :try
  70. set jici=0
  71. :loop
  72. set /a jici+=1
  73. echo.
  74. echo                             ——开始第“%jici%”轮任——
  75. ping /n ^!timec^! 127.0.1>nul
  76. echo.
  77. call :sub
  78. echo.
  79. IF errorlevel 0 (echo             【第“%jici%”轮任务完成,将重新开始任务,退出请直接关闭】) else (echo no^!^!)
  80. echo.
  81. echo ——————————————————————————————————————
  82. if exist newitems.txt call :bbot
  83. if %jici% lss 13 goto loop
  84. taskkill /f /t /im msimn.exe
  85. ping /n 10 127.0.1>nul
  86. goto start
  87. :try
  88. echo.
  89. if exist "%ProgramFiles%\Outlook Express\msimn.exe" start /min "" "%ProgramFiles%\Outlook Express\msimn.exe"
  90. ping /n 5 127.0.1>nul
  91. echo                             ……初始检测……
  92. if not exist "%ProgramFiles%\Outlook Express\msimn.exe" echo     对不起,找不到你的Outlook Express程序!&ping /n 5 127.0.1>nul&exit
  93. if not exist base64.exe echo     对不起,找不到你的base64.exe程序!&ping /n 5 127.0.1>nul&exit
  94. if not exist "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx" echo     对不起,找不到Outlook Express的收件箱!&ping /n 5 127.0.1>nul&exit
  95. IF errorlevel 0 echo                             ……初始检测……ok
  96. goto :eof
  97. :sub
  98. echo.
  99. echo                             ……1、提取邮件……
  100. if exist newitems.txt type newitems.txt>>Readmessageslog.txt
  101. del 收件箱.dbx,firstinbox.txt,editinbox.txt,subjectr.txt,newitems.txt>nul 2>nul 1>nul
  102. if exist "%ProgramFiles%\Outlook Express\msimn.exe" start /min "" "%ProgramFiles%\Outlook Express\msimn.exe"&ping /n 30 127.0.1>nul
  103. setlocal enabledelayedexpansion
  104. for /l %%a in (1,2,10000) do (
  105. set cmt=%%a
  106. if ^!jici^!==^!cmt^! goto cmt1
  107. )
  108. goto cmt2
  109. :cmt1
  110. taskkill /f /t /im msimn.exe
  111. ping /n 5 127.0.1>nul
  112. move "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx"   ^!cd^!
  113. goto cmt3
  114. :cmt2
  115. copy "%USERPROFILE%\Local Settings\Application Data\Identities\{1C7149FB-17FD-4ED9-B46C-B7C800F767FF}\Microsoft\Outlook Express\收件箱.dbx"   ^!cd^!
  116. :cmt3
  117. ren %cd%\收件箱.dbx firstinbox.txt
  118. for /f "tokens=*" %%a in ('type firstinbox.txt') do echo %%a>>editinbox.txt
  119. for /f "tokens=2*" %%a in ('findstr /i /b "Subject" editinbox.txt') do echo %%a %%b>>subjectr.txt
  120. del firstinbox.txt,editinbox.txt>nul 2>nul 1>nul
  121. if not exist subjectr.txt echo 收件箱没有邮件 &goto :eof
  122. if exist subjectr.txt %cmail%
  123. cd.>mnewitems.txt
  124. findstr /v "^=?gbk?B?" subjectr.txt>>mnewitems.txt
  125. setlocal enabledelayedexpansion
  126. set numt1=0
  127. findstr "^=?gbk?B?" subjectr.txt>nul 2>nul 1>nul &IF errorlevel 0 echo                             ……提取邮件……ok &goto gbkb
  128. goto :eof
  129. :gbkb
  130. echo.
  131. echo                             ……2、邮件解码……
  132. if exist subjectr.txt for /f "tokens=*" %%i in ('findstr "^=?gbk?B?" subjectr.txt') do (
  133. set /a numt1+=1
  134. echo ^!numt1^!>nul
  135. set fjmmd=%%i&echo ^!fjmmd:~8,400^!>subjectrjm1^!numt1^!.txt
  136. base64 -d -i subjectrjm1^!numt1^!.txt -o subjectrjm2^!numt1^!.txt
  137. for /f "tokens=*" %%x in (subjectrjm2^!numt1^!.txt) do echo %%x>>mnewitems.txt
  138. del subjectrjm2^!numt1^!.txt,subjectrjm1^!numt1^!.txt
  139. )
  140. IF errorlevel 0 (echo                             ……邮件解码……ok &goto old) else (echo no^!^!)
  141. if exist subjectr.txt del subjectr.txt
  142. goto :eof
  143. :old
  144. echo                             ……3、整理邮件……
  145. setlocal enabledelayedexpansion
  146. cd.>newitems.txt
  147. for /f "delims=" %%a in ('sort mnewitems.txt') do (
  148. set xav=%%a
  149. if not ^!xav^! equ ^!vbm^! echo ^!xav^!>>newitems.txt
  150. set vbm=%%a
  151. )
  152. del mnewitems.txt
  153. IF errorlevel 0 (echo                             ……整理邮件……ok) else (echo                             ……整理邮件……no)
  154. goto :eof
  155. :send
  156. echo.
  157. echo                             ……4、发送邮件……
  158. echo    请事先设置一个文本文件,把信件内容写入,再设置路径。你可以使用txt被动发件,也可以通过命令使用bat发件。
  159. ::call "%ProgramFiles%\WinRAR\RAR.exe" a "%userprofile%\桌面\123456.rar" npslist.txt pslist.txt runn.txt runr.txt
  160. cd %cd%
  161. blat -install ^!smtp^! ^!sender^!
  162. blat ^!cont^! -to ^!recive^! -u ^!sender^!   -base64 -charset Gb2312 -pw ^!pword^! -subject ^!subj^!
  163. ::-attach
  164. IF errorlevel 0 (echo                             ……发送邮件……ok) else (echo ……no)
  165. echo.
  166. ping /n 5 127.0.1>nul
  167. goto :eof
  168. :bbot
  169. echo @echo off>batbot001.bat
  170. echo echo.>>batbot001.bat
  171. echo echo                         ……我是执行机器人batbot001……>>batbot001.bat
  172. echo echo.>>batbot001.bat
  173. echo echo —————————————————————————————————————>>batbot001.bat
  174. for /f "tokens=*" %%a in (newitems.txt) do echo %%a>>batbot001.bat
  175. echo ping /n 10 127.0.1^>nul>>batbot001.bat
  176. echo exit>>batbot001.bat
  177. start "" batbot001.bat
  178. ping /n 5 127.0.1>nul
  179. goto :eof
复制代码


[ 本帖最后由 cjiabing 于 2010-3-12 02:32 编辑 ]
1

评分人数

TOP

目前版本是OEInboxtool v4.4(通用简化版)20100311。做了许多测试和优化,代码就不贴出来了。喜欢“简单就好”。下面介绍下使用方法。
       首先,检查你的系统是否安装有Outlook Express,并且是否可以使用。然后设置你的Outlook Express邮箱,收件时间大概设置为一分钟左右。其它的根据你的需要填写。smtp之类的到网上搜索。
       其次,设置本工具,首次运行时提示设置选项。
       1)设置循环时间。也就是多长时间提取一次收件箱和执行一次命令,缺省默认是60,相当于两三分钟。如果你在线测试的话,你填1进去,估计一分钟就循环一次。时间不是很准。如果你当场测试,循环时间设置为1即可,如果你外出遥控,建议把时间设大点,设成180、300、600等。180相当于三分钟,加上程序本身设置的时间限制,大概是五分钟时间。
       2)设置发送邮件。缺省默认是不发送,如果你想计算机反馈信息给你,你需要设置发送邮件选项。但除了此处设置之外,你还需要设置发送邮件的内容,发送邮件的内容你可以通过其它方式获得,具体后面介绍。
       3)设置随机程序。也就是跟随程序batbot001.bat执行的程序,这个似乎没什么意义,暂时保留。设置完之后,程序产生一个诸如此类OETool15533.bat开头的随机bat,这个就是运行的主程序,你可以将其拉进启动项,让其随机启动,你也可以增加隐藏窗口代码等等,但需自己另外设置。
       第三,测试。将主程序打开,程序开始循环读取收件箱。此时,你用手机(或者另外一台电脑)发送邮件到Outlook Express,程序或自动获取邮件,并将其提取、解码和执行。
       发送邮件举例:
       发件箱:[email=123456@qq.com]123456@qq.com[/email]——把该邮箱设置到(智能)手机中,收取邮件将相当于收取短信一样。
       收件箱:[email=987654@163.com]987654@163.com[/email]——把该邮箱设置到电脑Outlook Express中。
       使用手机邮箱([email=123456@qq.com]123456@qq.com[/email])给电脑邮箱([email=987654@163.com]987654@163.com[/email])发送邮件,邮件主体内容随便乱写,但邮件标题要写清楚,因为对于本工具而言只有标题有意义。如果你用批处理代码写标题,那么这个标题在程序提取到之后是可以直接执行的。
       以下几个常用命令可以做邮件标题:
       echo 你好啊,我是机器人!~
       ::将在你的电脑上显示你好啊,我是机器人!~
       Start "" "%programfiles%\ttplayer\ttplayer.exe"
       ::打开千千静听。
       for /r c:\ %%a in (ttplayer.exe) do if exist "%%a" start "" "%%a"
       ::C盘搜索千千静听并执行。
       taskkill /f /t /im ttplayer.exe
       ::关闭千千静听。
       Shutdown -s -t 0
       ::马上关机。
       Dir c:\>>body.txt
       ::查询C盘,并把结果写入文档body.txt(如果设置发送邮件并将body.txt设置为发送内容,你将收到查询结果)
       Tasklist>>body.txt
       ::查看当前进程并写入文档body.txt(如果设置了发送邮件,并将body.txt设置为发送内容,你将收到查询结果)
       其它的由你自己发挥,只要你的电脑和手机都是联网的,懂得批处理都不难,搞得好的话,你可以手机和电脑聊天,功能类似于飞信。而我的作用就是当我外出而电脑没关时,我可以用手机远程关机。
        为了正常使用,你需要下载第三方工具base64和blat,并放在程序所在目录,否则程序可能无法正常使用。

[ 本帖最后由 cjiabing 于 2010-3-11 22:37 编辑 ]

TOP

返回列表