.bat、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 %%a
  b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。
     for /R E:\test %%b in (*.txt *.bat) do echo %%b
     for /r %%c in (*) do (echo %%c)  :: 遍历当前目录下所有文件
  c. 如下命令行将产生序列 1 2 3 4 5
     for /L %%c in (1,1,5) do echo %%c
  d. 以下两句,显示当前的年月日和时间
     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 enabledelayedexpansion
     for /f %%i in (zhidian.txt) do (
   set atmp=%%i
   set atmp=!atmp:~8!
       if {!atmp!}=={} ( echo.) else echo !atmp!
     )
     :: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符)
     for /f "delims=" %%a in (zhidian.txt) do echo.%%a
  1. 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

  1. 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一下所有的局域网电脑)

  2. 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 启动时的颜色。
如果两参数一样,视为无效输入。只有一个参数时,设置字体。

  1. random 命令
    产生随机数(正整数0~)

  2. exit 命令
    结束程序。即时是被调用的程序,结束后也不会返回原程序

  3. 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
路径有空格时,可以用双引号括起来,也可以用   替代

使用例子

  1. copy C:\test*.* D:\back (复制C盘test文件夹的所有文件(不包括文件夹及子文件夹里的东西)到D盘的back文件夹)
  2. dir c:*.* > a.txt (将c盘文件列表写入 a.txt 中)
  3. 符号 > 生成文件并写入内容(如果有这文件则覆盖), >> 文件里追加内容
  4. md d:\aa (创建文件夹)
  5. 等待用户输入: set /p 变量名=屏幕显示信息。 Sample:set /p pass=请输入密码:
  6. 让用户按回车退出
    小技巧(替代pause),文件的最后一句:set /p tmp=操作结束,请按回车键退出
  7. 清屏: cls
  8. 查看自己的IP:
    for /f “tokens=15” %%i in (‘ipconfig ^| find /i “ip address”’) do set ip=%%i
    echo %ip% (这时的 %ip% 就是自己的IP地址)
  9. 修改文件的更新日期
    copy 文件名+,>nul (修改为当前时间,如果要修改为指定时间,先修改系统时间,再改回系统时间)
  10. ren C:\test*.jpg .JPG
    for /r %%c in (
    .jpg) do (ren %%c *.JPG) :: 修改当前目录下的所有文件的后缀名,包括子目录的
  11. 修改文件的文件名
    rename test.jpg test2.JPG
    rename *.jpg *.888.JPG
  12. start iexplore.exe http://www.baidu.com
  13. 显示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++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值