上班的时候偶尔会碰到把某个文件夹下的某一类型的所有文件一起复制到另一个文件夹中,如果手动的话还要去看着筛选有点麻烦,于是自己思考打算能不能用脚本去复制,决定用bat文件批处理。
首先要知道bat批处理命令的开始写法,用echo来开始。当然bat文件的命令还有很多现在仅仅用我们需要的命令,如果有不明白的可以查询具体命令。Please refer:http://www.jb51.net/article/5828.htm
在本地磁盘(我以本地F盘为例)找到要查询的源文件夹,比如我要在D:vs2015项目文件下找后缀为.cs的文件,把所有.cs文件复制到F:ack目录下。
新建一个文本文件,在文本文件中输入以下内容:
@ echo off
md F:ack
for /F %%A in ('dir /B /S "D:vs2015项目文件*.cs"') DO (copy %%A "F:ack")
然后把文本文件保存为.bat文件,再把C:WindowsSystem32目录下的cmd.exe 和新建的bat文件一起拷贝到一个文件夹下。
然后打开cmd.exe 执行新建的bat文件即可,当然也可以直接双击myBat.bat文件 只不过执行的时候会一闪而过,看不太清楚具体过程。
这时候看到F盘下的back文件夹增加了很多.cs文件。
解释一下上面的命令:
@ echo off
md F:ack
for /F %%A in ('dir /B /S "D:vs2015项目文件*.cs"') DO (copy %%A "F:ack")
md F:ack
for /F %%A in ('dir /B /S "D:vs2015项目文件*.cs"') DO (copy %%A "F:ack")
第一条命令是关闭回显,echo 表示显示此命令后的字符,当不需要显示命令行本身时使用此命令。
第二条命令是创建文件夹,很明显。
第三条有点复杂,使用的for循环,是for循环命令的具体实现。
语法:
对一组文件中的每一个文件执行某个特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
对一组文件中的每一个文件执行某个特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。