目录

  • 1、学习批处理脚本的初衷
  • 2、批处理脚本编写过程
    • 2.1、balt:Windows命令行发邮件工具
    • 2.2、成功发送的关键节点
    • 2.3 发送方为QQ邮箱,需要授权认证
    • 2.4 创建自动执行的任务
  • 3、DOS命令语法记录
    • 3.1、命令窗口显示DOS命令
    • 3.2、实习例子(方便以后再捡起来)
      • 3.2.1 echo/type/pause以及rem和双冒号注释
      • 3.2.2 title/if/比较关键字
      • 3.2.3 exist/del
      • 3.2.4 set设置变量值
      • 3.2.5 set查看系统变量
      • 3.2.6 if后加“/i”、转义字符
      • 3.2.7 goto语句及其命令模块标记、
      • 3.2.8 变量延迟、多命令连接运行
      • 3.2.9 set /a进行数学运算
      • 3.2.10 for语句的相关用法
  • 4.总结

1、学习批处理脚本的初衷

以前接触过批处理脚本,但是没有自己写过。按我的理解,批处理脚本就是把原本一条一条在命令窗口执行的DOS命令集合在一起,完成需求功能。
因为多地使用多台电脑,时常在某台电脑上浏览网页一时兴起收藏,但是换一台电脑的时候死活搜索不到了。要是用chrome的账号来同步,密码已经忘了,部分电脑不使用chrome还得额外安装浏览器,就考虑写个脚本把当前收藏夹发到邮箱里,另一台电脑登录邮箱下载后查找即可。

2、批处理脚本编写过程

2.1、balt:Windows命令行发邮件工具

最快速的方法是使用已经比较成熟的控制程序嵌入批处理脚本中执行。
Blat是完全公开的、基于Windows32位或64位的、使用SMTP协议发送邮件中内容的控制程序。blat对需要自动发送邮件的情况很有用。(瞧这翻译的o(╥﹏╥)o)
blat相关信息可在 http://www.blat.net 中查看。
blat下载地址:https://sourceforge.net/projects/blat/files/
blat命令的语法文档:\blat3222_32.full\blat3222\docs\syntax.txt
下载后只要把blat.exe拷贝到批处理脚本所在文件夹,就可以在批处理脚本中直接调用blat命令发送邮件了。

2.2、成功发送的关键节点

☆用户密码为授权密码,而不是在邮箱官网的登录密码。
以前早期邮箱是直接用邮箱官网的登录密码用于各种客户端的,但是后来越来越严格,就不行了。
了解获取授权密码的步骤,可以帮助你在任意一个非163手机邮箱客户端上添加163邮箱,主要步骤就是密码填写授权密码。
获取授权密码步骤如下:





最终版批处理脚本:

@ echo off
::设置发件邮箱为163邮箱
set from=myemail@163.com
::密码为授权密码,就是上图第5步之后弹出的网易邮箱系统生成的一串字符(若重新生成后此处密码也需要更新)
set pw=myauthpassword
::163的SMTP服务器,参照 http://help.163.com/09/1223/14/5R7P3QI100753VB8.html
set server=smtp.163.com
::设置我的收件邮箱,收件邮箱啥都行,没差别
set to=myqqemail@qq.com
::Chrome浏览器收藏夹的保存路径,json格式,用记事本啥的打开就行,后续可把它做成HTML界面,直接附在邮件正文里
set atf="C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\Bookmarks"
blat -body "详见附件" -s "我的工作电脑备份书签" -to %to% -server %server% -attach %atf% -f %from% -u %from% -pw %pw%
pause

2.3 发送方为QQ邮箱,需要授权认证

QQ邮箱需要身份验证是官方定的:

根据语法文档syntax.txt中的提示,进行授权认证的语句为:
Blat -install SMTP服务器地址 发件箱地址 [重复次数 [端口号]]
其中,SMTP的默认认证端口号是25。
批处理脚本最终版:

@ echo off
::设置发件邮箱为QQ邮箱
set from=myemail@qq.com
::密码为授权密码,与163的授权密码相同的获取方式
set pw=myauthpassword
::设置我的收件邮箱,收件邮箱啥都行,没差别
set to=myqqemail@qq.com
::Chrome浏览器收藏夹的保存路径,json格式,用记事本啥的打开就行,后续可把它做成HTML界面,直接附在邮件正文里
set atf="C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\Bookmarks"
::进行身份验证
blat -install smtp.qq.com myemail@qq.com 3 25
blat -body "详见附件" -s "我的工作电脑备份书签" -to %to% -server %server% -attach %atf%  -u %from% -pw %pw%
pause

2.4 创建自动执行的任务

以win 10为例,打开 此电脑->管理->系统工具->任务计划程序,右键创建新任务,选择已写好的脚本路径,设置触发条件,即可以定时执行已写好的批处理脚本:

3、DOS命令语法记录

3.1、命令窗口显示DOS命令

******>help :显示所有DOS命令。
******>help if(if可改成其他任意命令名称):显示该命令的具体用法,供使用参考。

命令 解释
ECHO 显示消息,或者启用或关闭命令回显。
CALL 从另一个批处理程序调用这一个。
COLOR 设置默认控制台前景和背景颜色。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。(可用正则表达式提取文件中指定字符串)
FOR 为一组文件中的每个文件运行一个指定的命令。
GOTO 将 Windows 命令解释程序定向到批处理程序中某个带标签的行。
IF 在批处理程序中执行有条件的处理操作。
MD 创建一个目录。
MKDIR 创建一个目录。
MOVE 将一个或多个文件从一个目录移动到另一个目录。
PAUSE 暂停批处理文件的处理并显示消息。
POPD 还原通过 PUSHD 保存的当前目录的上一个值。(堆栈)
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)。
SET 显示、设置或删除 Windows 环境变量。
SHUTDOWN 允许通过本地或远程方式正确关闭计算机。
START 启动单独的窗口以运行指定的程序或命令。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TYPE 显示文本文件的内容。
XCOPY 复制文件和目录树。

3.2、实习例子(方便以后再捡起来)

以下例子来自网络,按自己的理解做了部分可能不正规的语义注释。
特别提示:脚本一定要使用ANSI格式,否则出错都不知道咋出错的。

3.2.1 echo/type/pause以及rem和双冒号注释

rem 语句开头@,表示这句语句不回显
@echo off
rem 格式:echo 文件内容>文件路径
::其中>>在文末添加,>覆盖原内容
echo @echo off>test1.bat
echo echo this is test>>test1.bat
echo pause>>test1.bat
rem 显示该文件内容
type test1.bat
::打印
pause

3.2.2 title/if/比较关键字

@echo off
::title设置命令执行窗口的标题
title 我测试一下
::返回码errorlevel判断是否执行成功,默认为0,出错为1
echo %errorlevel%
::比较关键字:EQU - 等于;NEQ - 不等于;LSS - 小于;LEQ - 小于或等于;GTR - 大于;GEQ - 大于或等于
if %errorlevel% EQU 0 echo 没问题
::pause后不加限定,显示 请按任意键继续. . .
pause

3.2.3 exist/del

@echo off
::关键字exist判断是否存在文件
if not exist d:\test.bat (
::如果文件不存在,则建一个文件,并且把echo后的句子打到那个文件的最后一行echo @echo off>d:\test.bat
) else (
::删除已存在的文件del d:\test.bat
)
::pause后限定不显示任何内容
pause>nul

3.2.4 set设置变量值

@echo off
set a=1
if defined a (echo 已定义a
) else (::若注释掉set a=1,则运行此分支echo 未定义a
)
pause>nul

3.2.5 set查看系统变量

@echo off
::set命令查看所有系统变量
set
::查看JAVA_HOME环境变量
if defined JAVA_HOME echo %JAVA_HOME%
pause>nul

3.2.6 if后加“/i”、转义字符

@echo off
set a=123
set b=abc
set c=124
::if 后加/i,表示忽略大小写差别
if /i %b% EQU ABC (if %a% GEQ %c% (::因为“>”是关键字字符,所以加上^防止转义echo %a%^>=%c%) else (::转义字符可参考 https://www.robvanderwoude.com/escapechars.phpecho %a%^<%c%)
) else (echo %b%不等于ABC
)
pause>nul

3.2.7 goto语句及其命令模块标记、

@echo off
::使用冒号加标记名作为goto语句的标记
:start
::set后加/p,表示读取用户输入
set /p param=
echo %param%
if %param%==4 echo 请不要输入4! & goto start
pause

3.2.8 变量延迟、多命令连接运行

::倒数第二句,echo %a%输出为1;改为echo !a!则输出2.
@echo off
::变量延迟固定表达,后面双感叹号之间的变量读取最后的值
setlocal enabledelayedexpansion
set a=1
::& 顺序执行多条命令,而不管命令是否执行成功
::&& 顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
::|| 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
::|  管道命令 前一个命令的执行结果输出到后一个命令
set a=2&echo !a!
pause

3.2.9 set /a进行数学运算

@echo off
set a=1&set b=6
::set之后的变量有用%%包起来,则各自对应变量值,再字符组合后赋值 1+6
set c=%a%+%b%
echo %c%
::set值后的变量没有用%%包起来,则保持变量字符原型,a+b
set d=a+b
echo %d%
:: set之后加 /a,可以保证后续进行数学运算,对应变量值7
set /a e=a+b
echo %e%
pause

3.2.10 for语句的相关用法

@echo off
::for后面跟的变量用两个百分号定义出来,结果do中要引用变量的话也用%%标识出来。
::for %%变量名 in (范围) do (执行语句),范围各项之间的分隔符可以用逗号、分号、等号和空格。
for %%i in (A,B,C) do echo %%i & echo 1
pause>nul
@echo off
set str=c d e f g h i j k l m n
echo 当前的硬盘分区有:
::字母后加冒号,指代对应盘
for %%i in (%str%) do if exist %%i: echo %%i:
pause
@echo off
::in后的范围可以是路径
for %%i in (e:\*.*) do echo "%%i"
pause
@echo off
::与上个例子相同,还可以使用通配符指定执行范围
for %%i in (????.txt) do echo "%%i"
pause>nul
@echo off
setlocal enabledelayedexpansion
::FOR /L指定范围内按指定步长递增或递减,IN(start,step,end)括号里的3个值分别为开始值、步长值、结束值,包含结束值。
for /L %%i in (1,1,20) do (set num=%%iset name=battest!num!.bat::先复制,再做移动操作copy D:\battest.bat D:\!name!::此处为了尝试操作move;move会覆盖原路径下相同名字的文件,切记move D:\!name! "D:\Program Files (x86)\batcommand"
)
pause

4.总结

DOS命令是基本的磁盘和文件操作命令,系统自带。写批处理脚本除了文本编辑器不需额外安装其他软件或程序,处理系统相关的操作很方便。

批处理脚本自动发送浏览器收藏的书签给指定邮箱相关推荐

  1. 收藏 取消收藏html,一键解除网页限制,浏览器收藏夹书签小工具

    一键解除网页限制,浏览器收藏夹书签小工具 经常上网都会遇到一些网站不能复制文字.不能选择或者不能使用右键菜单,有时候非常的不方便. 比如:要用朗读女,读选中文字时,如果该网站有网页限制:不支持选中,复 ...

  2. linux日志手机,通过 shell 脚本 自动发送 log日志 文件内容 到手机邮箱

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 需要用到 mail 命令 如果你的系统中没有安装需要执行 (yum install -y mail sendmail) 安装 sendmail 是因为需要 ...

  3. 用浏览器收藏夹的书签保存javascript的简单脚本

    用浏览器收藏夹的书签保存javascript的简单脚本 之前一直好奇别人是如何保存常用的javascipt脚本的 油猴脚本,需要考虑整体的运行方式,有时还得专门写个按钮,需要一定基础 记事本保存,用的 ...

  4. 【分享日记】藏趣云浏览器网络收藏夹书签,多浏览器办公神器提高浏览器切换便捷性

    藏趣云浏览器收藏夹,办公效率神器,云书签系统开发日记. 继上次更新,已有一周多,继续添砖加瓦,优化了很多细节的问题,并且对部分的代码进行了重写,兼容性的问题解决其他太头疼了,不停的适配不同浏览器,我电 ...

  5. 批量导入html收藏夹谷歌,如何将360浏览器收藏夹导入谷歌浏览器书签?

    最近这段时间折腾比较多,所以慢慢地就喜欢上了谷歌浏览器,特别是谷歌浏览器的翻译特别牛,所以也慢慢地开始抛弃360 浏览器.在在之前,我需要将 360 浏览器收藏多年的文件导入到谷歌浏览器的书签中.如果 ...

  6. 浏览器收藏夹(书签)导入导出

    文章目录 前言 一.操作步骤 1.ME浏览器导出收藏夹 2.将ME浏览器导出的收藏夹导入到谷歌浏览器 总结 前言 平时或工作中我们经常会有这样一些烦恼, 重装系统后或变更浏览器后,如何将之前浏览器我们 ...

  7. qq浏览器怎么导入其他浏览器收藏夹

    现在浏览器种类非常多,有时候由于特殊需要,一个电脑有好几个浏览器,在使用浏览器的过程中收藏夹里的东西非常的多,但时间越久,收藏夹东西累计得越来也多,我们记性再好也会偶尔记不住自己需要的东西是在哪个浏览 ...

  8. html收藏夹导入mac,Mac浏览器导入其他浏览器收藏-功能说明

    本帖最后由 成全锅锅 于 2019-4-29 14:48 编辑 360极速浏览器 Mac版导入收藏-功能说明 感谢使用360极速浏览器 Mac版 为了方便用户使用,我们支持多种收藏导入方式,可将其他浏 ...

  9. 计算机收藏夹位于哪个磁盘,电脑浏览器收藏夹保存在哪里

    使用浏览器进行浏览,总会保存一下自己喜欢或者必要的网站收藏,那么你知道浏览器收藏夹保存在哪里吗?下面为您精心推荐了电脑浏览器收藏夹保存在哪里,希望对您有所帮助. 电脑浏览器收藏夹保存在哪里 进入系统桌 ...

最新文章

  1. python自定义线程
  2. CentOS 7.0安装Nvidia驱动
  3. python连接neo4j
  4. webView.loadUrl(file:///android_asset/table3.html)出现中文乱码的问题
  5. react-router中进行路由控制
  6. poj 1032 Parliament 编程的小技巧
  7. sqlite如何与mysql连接数据库连接_c#中怎么连接到sqlite数据库?
  8. CentOS7增加或修改SSH端口号
  9. 禁止从终端服务器复制文件
  10. 更好地保护眼睛从现在做起!
  11. 毕业寄语 | 关于毕业季的温柔文案
  12. 这种公司再也呆不下去了!我要跳槽!
  13. AttributeError: module ‘tushare‘ has no attribute ‘get_k_data‘报错解决方法
  14. 关注奢交所兄弟品牌佰家当 17年积累撬动万亿民资市场
  15. 关于稼穑[jià sè] 的神话传说(稼穑:种植与收割,泛指农业劳动)
  16. 《笼中鸟——精神病人的生存现状》观后的一点思考
  17. 应急响应-敏感信息泄露怎么解决?
  18. Python基础教程第七章学习笔记——更加抽象
  19. huntian oy (数论卷积杜教筛)
  20. html中怎么制作太阳月亮交替,使用纯CSS实现太阳和地球和月亮运转模型动画的方法...

热门文章

  1. 【Linux基础】静态库和共享库(如何自定义库文件?)
  2. python报名_(招募结束,停止报名)『Python爬虫小分队』群招募公告
  3. 蒙特卡洛 欧式期权 matlab,大家好,问大家一个蒙特卡洛期权定价的matlab程序,谢谢大家...
  4. 月饼西施PK愤怒的小鸟,这个中秋狂掀DIY风
  5. 早起的鸟儿有虫吃-JSTL核心标签库[收藏]
  6. 常用精品API接口汇总(内附可用API)
  7. 2018第四届全球互联网经济大会在京举办
  8. 《VR入门系列教程》之16---第一个OculusVR应用
  9. 地方时与世界时的转换问题
  10. js 正则表达式中的特殊字符