我有两个文件夹Types和TypeBodies,里面有同名的文件(后缀不同),否则只在Types里面。我需要删除每个文件里面前三行注释的内容,然后把TypeBodies的文件内容放到Types里的同名文件后。
- 删除所有文件的前三行
- 合并同名文件
下面说说我对其中命令的理解:
▶echo off关闭屏显,就是下面的指令不会在屏幕上打出来,前边加个@,echo off也不会显示;
▶&表示命令都执行,前边执行失败,后边不执行;
▶setlocal enabledelayedexpansion表示变量延迟,下面的for循环会用到,使得每次循环%%i的值不一样;
▶for %%i in (1) do (2)是bat中的for循环,%%i是循环变量,(1)是需要循环的集合,(2)是每次循环需要执行的语句块,/r表示递归遍历,.表示当前目录,后边的反斜杠是文件夹分隔符,切记只能用反斜杠;
▶下边一个for循环按行遍历文件内容,/f表示读取文件内容,skip=3表示跳过前三行,delims=表示分隔符为空,findstr表示查找字符串,.*表示任意字符重复任意遍,用这种方法能查找文件内所有字符,包括空格和空行;
▶echo;表示忽略输出到屏幕,>>表示输出,只是一个变量;
▶move 表示移动内容到;pause是暂停,屏幕显示输入任意字符以继续
▶%%~ni表示%%i中文件名(没有路径,没有后缀),后边加.tpb表示字符拼接;
▶copy 把前边内容复制到后边文件,+表示两个文件拼接,/b表示是二进制文件,此处避免生成的文件后边有特殊字符
----华丽分割线---------------------------------------------------------------------------------------------
这里贴出我学习中用到的测试代码,相对更入门一点儿
- 提取文件内容
注:其中findstr后边的/v,表示排除匹配的行,是转义字符(是findstr中的,bat中的转义字符是^)
- 从一个文件中查找另一个文件中的同名文件
下边的几个文件操作不能保留空白字符和空行,请慎重
- 复制内容到同名文件
注:>nul 2>nul能够使move操作不在窗口显示
- 同名txt文件添加到sql文件后
注:第二个循环里面的'type %%ni.txt'如果换成%%ni.txt则找不到a.txt文件,具体原因不知道。。。type命令是在窗口显示文件内容
- 删除文件第一行
- 删除文件最后一行
- 删除文件最后一行pro