windows下批量拷贝目录下所有文件夹中的指定文件

文件操作

Posted by dulunar on September 17, 2019

主要是前段时间要从一个server上面拷贝一批数据,但是又不是linux,所以实验了一下windows下的批量拷贝;

场景:

测序的项目,每一个样本的数据都存放在各自的名称文件夹下,我需要下载一批数据的variant文件(.vcf),但是如果一个一个找,太麻烦了,会眼酸手酸,想偷一下懒;

需求:

肯定不能改动文件的名字,就是拷贝到一个文件中,方便后期的文件查看、转移和分析,简单的说的话就是把存放数据的那个盘下面的所有文件夹中的variant文件(.vcf)拷贝出来;

方法:

做一个bat文件,遍历的扫一遍,copy出来就好了; 1、新建一个copyfile.txt文档,写入如下语句:

@echo off
set target_path=C:\Users\dulun\Desktop\uTorrent
set copy_target_path=C:\Users\dulun\Desktop\copy
set vcffile=*.vcf
C:
cd %target_path%
for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do (
echo %%s
copy /y "%%s" %copy_target_path%
)
pause

2、然后保存,退出,把txt文件的后缀txt改为bat,copyfile.bat获得;

3、右键直接运行copyfile.bat文件即可,或者双击运行;

4、见证效果的时候到了,你的桌面会出现一个cmd的界面,如下: cmd界面,copying

解析一下代码:

@echo off                                             ==>  @echo 就是打印信息,没有实际作用
set target_path=C:\Users\dulun\Desktop\uTorrent       ==>  设置指定文件所在的盘或者目录
set copy_target_path=C:\Users\dulun\Desktop\copy      ==> 设置指定文件拷贝存储的目录,先建立这个目录
set vcffile=*.vcf                                     ==> 设置指定文件的类型,这里是.vcf为后缀
C:                                                    ==> 进入指定文件所在的盘,这里是C盘,一定要指定
cd %target_path%                                      ==> 进入指定文件的目录,缩小一下匹配的范围,减少时间
for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do (
echo %%s
copy /y "%%s" %copy_target_path%
)                                                     ==> 这里就是在指定目录下面匹配指定文件,遍历操作,输出文件名字,拷贝文件
pause                                                 ==> 执行后显示:请按任意键继续...

特殊阅读, for的详细的使用,可以看下面的截图:

win+R键,输入cmd,打开,在弹出窗口输入for /?回车就可以查看for的详细用法; for /? #1 for /? #2

扩展使用1:

windows下, copy、xcopy是拷贝文件; move是移动文件; del是删除文件; rd是删除目录,删除文件夹及其里面的所有子目录和文件,用rd命令带/s /q参数;

rd /s /q %copy_target_path%

判断是否存在:

if not exist %copy_target_path% 

md创建文件夹:

md %copy_target_path%

rename重命名:

for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do rename "%%s" *.csv

扩展使用2:

1、 COPY不能复制文件夹下的文件,而XCOPY可以。 A:>XCOPY C:\A*.* C:\B /S /E 将A文件夹下所有的文件和文件夹都复制到B文件夹下,并保持原有文件结构。

2.、XCOPY不能连接文件,而COPY可以连接文件 如:将A盘中的A.TXT和B.TXT文件连接起来,连接后的文件名为C.TXT 解:用COPY命令即可完成此项操作。 A:>COPY A.TXT+B.TXT C.TXT

						—— dulunar 后记于 2019.09