文件拷贝,用C语言实现命令行式的COPY功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件拷贝,用C语言实现命令行式的COPY功能相关的知识,希望对你有一定的参考价值。

C语言编程 最好把思路和要点解释一下

#include "stdio.h"
#include "stdlib.h"
char buff[32768];
main(int argc,char *argv[])

FILE *fp1,*fp2; //定义两个文件
unsigned int bytes,Bsize=32768;
unsigned long i=0;
if((fp1=fopen(argv[1],"rb"))==0) //读文件
printf("can't open file %s.",argv[1]);exit(0);
if((fp2=fopen(argv[2],"w"))==0) //写文件
printf("can't open file %s.",argv[2]);exit(0);
while(Bsize) //下面拷贝文件

if(fread(buff,Bsize,1,fp1))

fwrite(buff,Bsize,1,fp2);
i=i+Bsize;

else

fseek(fp1,i,0);
Bsize=Bsize/2;


fclose(fp1);
fclose(fp2); //关闭文件
参考技术A 或者system("[command]");
如果操作系统一定的话也可以用这个。command就是控制台命令
参考技术B API CopyFile...

用dos的copy或xcopy命令是否可以实现一次拷贝多个指定文件?

比如我想把E:\下的三个文件a.txt、b.txt、c.txt拷贝到D:\下a.txt、b.txt、c.txt,是不是可以

用1条指令实现呢?怎么实现,请写出来。我不想用下面的3条指令实现:
copy E:\a.txt D:\a.txt
copy E:\b.txt D:\b.txt
copy E:\c.txt D:\c.txt
我主要是想知道下面命令中的 “[/EXCLUDE:file1[+file2][+file3]...]”这段怎么用,我试了都没成功。比如我这么写的“Xcopy /y /EXCLUDE:a.db +b.db E:\aaa\”,不成功。哈哈,我是初学者,见笑了。

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]...]

copy 每次可以复制一个文件,或将多个文件合并后复制为1个文件;但它支持通配符,你可以用 copy E:\*.txt D:\ 这样的命令来复制多个同类型文件
xcopy 是对整个文件夹进行复制,它可以在目标路径下新建一个与原目录同名的子目录
参考技术A 两种方法:
1 用命令
copy e:\?.txt d:\
?代表一个任意字符,当然如果有e.txt……的文件也会拷贝到D盘。

2 建立一个 bat文件,比如:copy.bat,其内容就是:

copy E:\a.txt D:\a.txt
copy E:\b.txt D:\b.txt
copy E:\c.txt D:\c.txt

需要拷贝时,执行copy.bat就可以了。

以下是copy和xcopy的帮助

copy 将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,
尽可能使用短文件名。
/Y 不使用确认是否要改写现有目标文件
的提示。
/-Y 使用确认是否要改写现有目标文件
的提示。
/Z 用可重新启动模式复制已联网的文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
这可能会被命令行上的 /-Y 替代。除非 COPY
命令是在一个批文件脚本中执行的,默认值应为
在改写时进行提示。

要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或 file1+file2+file3 格式)。

xcopy 复制文件和目录树。

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 改写。

以上是关于文件拷贝,用C语言实现命令行式的COPY功能的主要内容,如果未能解决你的问题,请参考以下文章

请帮忙用C语言编写一个函数~~~功能是“文件复制”~~~谢谢~~

用dos的copy或xcopy命令是否可以实现一次拷贝多个指定文件?

C语言函数编写:文件复制

Java怎么实现文件拷贝

编码用命令行执行的C语言词语统计程序

编码用命令行执行的C语言词语统计程序