如何批处理复制文件(文件夹)?

如何批处理复制文件(文件夹)?,第1张

1.复制C:\a\e.txt 文本文件到d:\b文件夹下面

【复制完的目录结构应该为d:\b\e.txt】

xcopy /y c:\a\e.txt d:\b\ >nul

2.复制C:\a文件夹及其内所有东西(包括隐藏,系统文件)到D:\b文件夹下面

【 a文件夹也要复制过去,也就是说,复制之后,a文件夹应该在b文件夹下】

xcopy /y /e /h c:\a d:\b\a\ >nul

3.复制C:\a文件夹内的所有东西到D:\b文件夹下面

【a文件夹不复制过去,只是把c,d这两个文件夹和e.txt这个文件复制过去】

xcopy /y /e /h c:\a d:\b\ >nul

复制文件和目录树。

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]

[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]

[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]

[/EXCLUDE:file1[+file2][+file3]...]

source 指定要复制的文件。

destination 指定新文件的位置和/或名称。

/A 只复制有存档属性集的文件,

但不改变属性。

/M 只复制有存档属性集的文件,

并关闭存档属性。

/D:m-d-y 复制在指定日期或指定日期以后更改的文件。

如果没有提供日期,只复制那些源时间

目标时间新的文件。

/EXCLUDE:file1[+file2][+file3]...

指定含有字符串的文件列表。每一个字符串

必须在文件的单独行中。如果有任何

字符串与要被复制的文件的绝对路径

相符,那个文件将不会得到复制。

例如,指定如 \obj\ 或 .obj 的字符串会排除

目录 obj 下面的所有文件或带有

.obj 扩展名的文件。

/P 创建每个目标文件前提示。

/S 复制目录和子目录,除了空的。

/E 复制目录和子目录,包括空的。

与 /S /E 相同。可以用来修改 /T。

/V 验证每个新文件。

/W 提示您在复制前按键。

/C 即使有错误,也继续复制。

/I 如果目标不存在,又在复制一个以上的文件,

则假定目标一定是一个目录。

/Q 复制时不显示文件名。

/F 复制时显示完整的源和目标文件名。

/L 显示要复制的文件。

/G 允许将没有经过加密的文件复制到

不支持加密的目标。

/H 也复制隐藏和系统文件。

/R 覆盖只读文件。

/T 创建目录结构,但不复制文件。

不包括空目录或子目录。/T /E 包括

空目录和子目录。

/U 只复制已经存在于目标中的文件。

/K 复制属性。一般的 Xcopy 会重置只读属性。

/N 用生成的短名复制。

/O 复制文件所有权和 ACL 信息。

/X 复制文件审核设置(隐含 /O)。

/Y 复制文件审核设置(隐含 /O)。

现存目标文件。

/-Y 导致提示以确认改写一个

现存目标文件。

/Z用重新启动模式复制网络文件。

命令行开关 /Y 可以预先在 COPYCMD 环境变量中设置。

这可能被命令行上的 /-Y 改写。

同学让我帮忙处理数据,但是有365天的数据也就是365个文件夹,整体文件好几十个G,但是每个文件夹中有用的文件只有几个且很小,于是就准备写一个脚本文件对其进行批处理,反正也没学过,就搜集资料搞吧,搞好了详细写给大家看嘛。

同学的文件分布是这样的:

其中有用的文件是这样的,且每个文件夹中都类似:

明确了需求,直接把最后源码先看,再具体一行行讲:

下面是讲解,对应每行

(1)@为不输出当前行,echo off是取消显示命令

(2)mkdir是创建文件夹

(3)for循环中,脚本语言使用%%variable做变量,要加两个百分号,变量名大小写区分,/f的话就是遍历整体里面的内容,若不加则无法遍历file,后面的dir是当前路径,加参数(只列出当前用到的),也就是只按顺序输出文件夹名:

(4)输出一下文件夹名

(5)将文件夹中符合met_ . 格式的文件复制到result文件夹中,*是通配符,可以代表任何字符。后面的参数意义为:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8142890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存