Bootstrap

用bat批量处理数据

什么是bat

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中,由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件的扩展名为bat 。比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于微软的强大的PowerShell的,用来批量处理一些任务的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。
前一篇中已区分过shell、bash、dos、cmd概念,回顾:
cmd与dos的最大区别,一个只是接口、一个是操作系统。
管理计算机硬件的其实是内核,用户正是通过shell(外壳)来跟内核通信的,从本质上说shell是一个能执行各种命令的宏处理器。而bash(/bin/bash)就是linux默认的shell。近似地理解windows的shell=cmd,都是命令行解释器,都是用户与操作系统的交互接口。但是bash要比cmd强大很多,windows也有强大的shell叫windows power shell。

利用main函数的传参功能

int main(int argc,char **argv)//整数类型 主函数(整数类型 统计参数个数,字符类型 **指针至字符)
{
//示例代码......
}

main主函数的两个形参允许从执行环境中传递任意的多字节字符串(它们通常被称为命令行参数):

  • argc:整数,为传给main()的命令行参数个数。

  • argv:字符串数组。

char* argv[],我们可以看出,argv的类型是char* [],即是一个指向字符数组的指针,所以我们还可以写作:char** argv,各个指针 argv[1] … argv[argc-1] 指向每个字符串的第一个字符。

在DOS 3.X版本中,argv[0]为程序运行的全路径名;

对DOS 3.0以下的版本,argv[0]为空串(“”)。argv[1]为在DOS命令行中执行程序名后的第一个字符串;argv[2]为执行程序名后的第二个字符串;…

argv[argc]为NULL。

当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows操作系统而言),这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。由系统在启动运行时传递参数。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令 参数1 参数2 …… 参数n

此格式也称为命令行。命令行中的命令就是可执行文件的文件名(exe),其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。在VS的调试命令行中省略了exe,只需输入参数即可。

命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
其中program为文件名,也就是由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,指针数组的大小由参数argc的值决定,此例中argc为6。

数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后才是参数。

给出一个如何使用argc的示例:

/*program name EXAMPLE.EXE*/
#include
#include
main(int argc,char *argv[],char *env[])
{
int i;
printf("These are the %d command-line arguments passed to main:\n\n", argc);
for(i=0; i<=argc; i++)
printf("argv[%d]:%s\n", i, argv[i]);
printf("\nThe environment string(s)on this system are: \\n\n");
for(i=0; env[i]!=NULL; i++)
printf(" env[%d]:%s\n", i, env[i]);
}

bat的使用

REM 本程序作用
REM author date
G:
cd G:
md G:\battest
E:
cd E:\release
start /wait XXX.exe E:\aaa\bbb\config.txt 10 5 8 G:\batest\result.txt 0 1
pause

这里只展示了基础命令,更多命令可以搜索关键词bat命令

echo data process finished!
echo off:关闭显示
set filename = ss
goto end
end:

链接:
bat命令大全
bat命令学习
cmd命令及批处理入门

;