.bat、python与C++程序进行批量处理的学习与实践
目录
- .bat
- 基本语法
- 栗子
- %0~%9:命令参数的引用
- help:命令帮助
- echo:打印输出信息
- @ 命令 :不显示该行命令
- Goto 命令:跳转
- Call 命令:调用另一个批处理程序,并且不终止父批处理程序
- start 命令:调用外部程序
- If else 命令
- 比较运算符:
- choice /c:dme defrag,mem,end
- for 命令
- 其它命令:ping,telnet,color,exit,shutdown
- 文件处理
- 使用例子
- 更多使用例子请参考:
- python
- C++
.bat
基本语法
注意事项:move copy等这种余目录相关命令,如果目录名字货文件名字中带有空格,应该加双引号,如:
MOVE /Y pcl_d.txt “C:\Program Files\PCL 1.11.1”
一、基础语法:
1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。
2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
3.批处理的编程能力远不如C语言等编程语言,也十分不规范。
4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
6.大小写不敏感(命令符忽略大小写)
7.批处理的文件扩展名为 .bat 或 .cmd。
8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
详细介绍请参考文献:https://www.cnblogs.com/niuxiaohao/archive/2011/03/17/1986845.html
栗子
%0~%9:命令参数的引用
call (echo %1 ) “para1”
help:命令帮助
help type (显示跟“type /?”一样)
echo:打印输出信息
echo on
echo off
echo “hello word”
@ 命令 :不显示该行命令
不显示@后面的命令
@echo hello
Goto 命令:跳转
跳转到标签行执行,标签标志位:开头
@echo off
:begin
copy a:. d:\back
echo Please put a new disk into driver A
pause
goto begin
Call 命令:调用另一个批处理程序,并且不终止父批处理程序
调用另一个批处理程序,并且不终止父批处理程序
call test.bat “para1”
start 命令:调用外部程序
调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。
start /MIN test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化)
start e:“program files”\极品列车时刻表\jpskb.exe (文件路径名有空格时)
If else 命令
if “%1” == “a” format a:
if {%1} == {} goto noparms
if exist config.sys edit config.sys (表示如果存在这文件,则编辑它,用很难看的系统编辑器)
if exist config.sys type config.sys (表示如果存在这文件,则显示它的内容)
@echo off
XCOPY F:\test.bat D:
IF ERRORLEVEL 1 (ECHO 文件拷贝失败
) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件
pause
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )
比较运算符:
EQU - 等于 (一般使用“==”)NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于
choice /c:dme defrag,mem,end
for 命令
1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。for %%c in (*.bat *.txt) do (echo %%c)a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。for /D %%a in (*e* *i*) do echo %%ab. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。for /R E:\test %%b in (*.txt *.bat) do echo %%bfor /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件c. 如下命令行将产生序列 1 2 3 4 5for /L %%c in (1,1,5) do echo %%cd. 以下两句,显示当前的年月日和时间For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j时%%k分e. 把记事本中的内容每一行前面去掉8个字符setlocal enabledelayedexpansionfor /f %%i in (zhidian.txt) do (set atmp=%%iset atmp=!atmp:~8!if {!atmp!}=={} ( echo.) else echo !atmp!):: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符)for /f "delims=" %%a in (zhidian.txt) do echo.%%a
- continue 和 break
利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单
continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可
break: 在 for 循环的外面的下一句写上一个标签,跳转到这位置即可
Sample: (伪代码)
for /F [“options”] %variable IN (command) DO (
… do command …
if … goto continue
if … goto break
… do command …
:continue
)
:break
其它命令:ping,telnet,color,exit,shutdown
ping 命令
测试网络联接状况以及信息包发送和接收状况。但是不能够测试端口。
语法:ping IP地址或主机名 [-t] [-a] [-n count] [-l size]
参数含义:
-t 不停地向目标主机发送数据;
-a 以IP地址格式来显示目标主机的网络地址;
-n count 指定要Ping多少次,具体次数由count来指定;
-l size 指定发送到目标主机的数据包的大小。
Sample: ping 192.168.0.1 -t (不停的测试192.168.0.1,按ctrl+c停止)
Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的局域网电脑)telnet 命令
测试端口使用 telnet IP地址或主机名 端口,使用tcp协议的
Sample: telnet 192.168.0.1 80 (测试192.168.0.1的80端口)
3.color 命令
设置背景及字体颜色
语法: color bf
b 是指定背景色的十六进制数字; f 指定前景颜色(即字体颜色)。
颜色值: 0:黑色 1:蓝色 2:绿色 3:湖蓝 4:红色 5:紫色 6:黄色 7:白色
8:灰色 9:淡蓝 A:淡绿 B:浅绿 C:淡红 D:淡紫 E:淡黄 F:亮白
如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。
如果两参数一样,视为无效输入。只有一个参数时,设置字体。
random 命令
产生随机数(正整数0~)exit 命令
结束程序。即时是被调用的程序,结束后也不会返回原程序shutdown命令
shutdown -s 关机
文件处理
1.删除
1) 删除一个文件或多个文件
del /s /q /f d:\test\a.bat
将直接删除d:\test\a.bat,没有任务提示
del temp* /q /f /s
将直接删除 本目录的 temp 目录的所有文件,没有任务提示
删除文件的时候可以使用“*”作通配符
2) 删除一个空目录
rd /q /s d:\test\log
将直接删除d:\test\log目录,如果log目录里面有文件将无法删除
3) 删除一个非空目录 (必须指定目录名称)
rmdir /q /s d:\test\logs
必须指定目录名称,不能使用通配符
/S 除目录本身外,还将删除指定目录下的所有子目录
/Q 安静模式,带 /S 删除目录树时不要求确认
无论里面是否有文件或文件夹将全部直接删除
2.创建目录
MKDIR [drive:]path
MD [drive:]path
路径有空格时,可以用双引号括起来,也可以用 替代
使用例子
- copy C:\test*.* D:\back (复制C盘test文件夹的所有文件(不包括文件夹及子文件夹里的东西)到D盘的back文件夹)
- dir c:*.* > a.txt (将c盘文件列表写入 a.txt 中)
- 符号 > 生成文件并写入内容(如果有这文件则覆盖), >> 文件里追加内容
- md d:\aa (创建文件夹)
- 等待用户输入: set /p 变量名=屏幕显示信息。 Sample:set /p pass=请输入密码:
- 让用户按回车退出
小技巧(替代pause),文件的最后一句:set /p tmp=操作结束,请按回车键退出 - 清屏: cls
- 查看自己的IP:
for /f “tokens=15” %%i in (‘ipconfig ^| find /i “ip address”’) do set ip=%%i
echo %ip% (这时的 %ip% 就是自己的IP地址) - 修改文件的更新日期
copy 文件名+,>nul (修改为当前时间,如果要修改为指定时间,先修改系统时间,再改回系统时间) - ren C:\test*.jpg .JPG
for /r %%c in (.jpg) do (ren %%c *.JPG) :: 修改当前目录下的所有文件的后缀名,包括子目录的 - 修改文件的文件名
rename test.jpg test2.JPG
rename *.jpg *.888.JPG - start iexplore.exe http://www.baidu.com
- 显示txt中的每一行
for /f “delims=” %%a in (pcl_r.txt) do echo.%%a
更多使用例子请参考:
https://www.cnblogs.com/niuxiaohao/archive/2011/03/17/1986845.html
python
C++
.bat、python与C++程序进行批量处理的学习与实践相关推荐
- 使用python搭配pandoc实现html批量转word
使用python搭配pandoc实现html批量转word 好兄弟工作上有一批(5000+)html的文档需要转成word格式,他采用了两种实现方式,但都有些问题: 直接改后缀有些会乱码 --> ...
- python程序-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- 用python脚本实现JRA-55数据批量下载
今天开完组会,小小放松一下哈哈,更新一下许久没更新的CSDN(登陆太少,好多私信和评论都没回复,尴尬哈哈) 我之前下载JRA-55的monthly数据,上ftp用手点!用手点!!![破音] 太惨了,简 ...
- python写软件实例-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- python抠图精确到发丝_别再用PS了,我用五行Python代码就实现了批量抠图
对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图.不过对于一些比较复杂的图,有时候还是需要花点时间的,今天就给大家带了一个非常快速简单的办法,用Python来批量抠 ...
- python改文件名_python实现批量修改文件名代码
我曾以为,写脚本是很难的,直到我遇到了Python 前言随着国内版权意识的跟进,很多影视音乐资源开始收费,而且度盘又经常随意封杀各种资源,所以,为了保护资源,老司机们越来越倾向于把资源下载到本地,但随 ...
- Python初学尝试:word批量刷格式转PDF,替换页眉页脚
Python初学尝试:word批量刷格式转PDF,替换页眉页脚 初学尝试 round 1 ronund 2 easygui round 4 PyQt5 round 4 wxpython 小结 初学尝试 ...
- Python 免费代理ip的批量获取
Python 免费代理ip的批量获取 简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一丈,在爬取网页的 ...
- python抠图_别再用PS了,我用五行Python代码就实现了批量抠图
对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图.不过对于一些比较复杂的图,有时候还是需要花点时间的,今天就给大家带了一个非常快速简单的办法,用Python来批量抠 ...
- python网络爬虫程序技术,Python网络爬虫程序技术
spContent=该课程是2018年广东省精品在线开放课程.课程主要以爬取学生信息.爬取城市天气预报.爬取网站图像.爬起图书网站图书.爬取商城网站商品等5个项目为依托,讲解Web.正则表达式.Bea ...
最新文章
- 允许用户在web Interface上修改密码
- 首次看清体内所有癌症转移灶,深度学习方法立大功!中国留学生一作论文登《细胞》封面...
- 解决忘记oracle管理员密码(转)
- 神策数据斩获大数据星河奖,首发用户行为分析标准
- final类是否可以被代理_设计模式——代理模式
- android studio lambda插件,在Android Studio中使用Lambda表达式(retrolambda)
- ubuntu如何杀死进程
- tdd java_Java TDD简介–第1部分
- 内存映射获取行数_使用内存映射文件获取巨大的矩阵
- 继承/作⽤域/作⽤域链
- visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色
- sqlserver 汉字转拼音(转载)
- 解决Mac无法睡眠问题
- 大数据可视化设计师丹尼斯_自助数据可视化设计师如何谋生
- 第二本书:疯狂人类进化史20190620
- 卸载ubuntu系统,恢复win10单系统【win10+Ubuntu20.04双系统】
- 华为云排名第八,2019年云综合收入85亿元
- 【C语言】详解qsort函数使用和模拟实现
- Typora快捷键全
- linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
热门文章
- python数据分析教程百度云资源-【python数据分析+pdf】百度云下载 - 云盘精灵
- 基于C++的深度学习模型部署
- 端口输出报错**Error** test5.ASM(60) Constant too large
- ORA-01790 expression must have same datatype as corresponding expression 问题解决
- java:comp/env 解释
- Maven的学习与2022IDEA创建Maven的web项目的教程(这个比上一期更“啰嗦哦~,前面不想删了,整体再来一遍”)
- 清远市高中计算机考试时间,2017年清远市中考体育考试安排
- 求原谅---好久没更新了
- 读书笔记-情感化设计
- flutter中的点击事件