Board logo

标题: [原创] [批处理命令一日一教学](6)复制文件:copy [打印本页]

作者: namejm    时间: 2008-12-21 14:29     标题: [批处理命令一日一教学](6)复制文件:copy

[一日一教学]批处理系列帖子索引 http://www.bathome.net/thread-2576-1-1.html

标题:一日一教学系列6_文件复制:copy
首发地址:http://bbs.bathome.net/topicadmin.php?tid=2863
首发日期:2008.12.21
更新日期:无

上一篇:流程跳转:goto  http://bbs.bathome.net/viewthread.php?tid=2574
下一篇:文件删除:del http://bbs.bathome.net/viewthread.php?tid=2962

  copy,中文含义为“复制”,一个很容易见名知意的命令,它的作用是复制文件,用法十分简单:copy 源文件 目的路径。

  假设,你需要把d:\test\test.txt这个文件复制到D盘根目录下,那么,使用 copy d:\test\test.txt d:\ 就可以轻易办到。

  当然,这是最简单的情形,在实际使用中,还是会碰到十分复杂的情况的。

  如果D盘根目录下已经存在了一个名为test.txt的文件,那么,复制过去的时候,copy命令就会提示你是覆盖原文件、是放弃复制还是覆盖所有文件。如果你在批量复制的时候,一概覆盖原文件,那么,一个一个地选择十分麻烦,这个时候,你可以使用不加提示就覆盖原文件的参数 /y (相当于自动选择了Yes选项),完整的命令为 copy /y d:\test\test.txt d:\ 。

  如果复制的时候,你还需要把源文件改个名,比如把test.txt改为1.txt的时候,可以直接使用:copy d:\test\test.txt d:\1.txt 这样的命令,也就是说,在指定目的路径的时候,直接指定文件名,那么,新的文件名就是源文件复制之后的名字。

  如果要复制的路径带有空格、&等特殊符号的时候,请使用引号把这些特殊字符括起来,比如: copy "d:\test abc\test.txt" "d:\t&est"

  copy命令除了“复制”文件的功能外,还有一个绝活:合并多个文件为一个文件,具体的格式为:copy 文件1+文件2+文件3+…… 目的路径\新文件名 。例如:copy d:\test.txt+d:\abc.txt d:\test\test.txt,那么,就把D盘根目录下的test.txt和abc.txt两个文件的内容合并为test.txt,并保存到d:\test目录下。

  copy 还有一些参数,但是常用的就上面的用法,更多的用法请在命令行窗口中使用 copy /? 来查询,很容易上手的。

  必须注意的是,copy只能复制文件,对于文件夹的复制,则需要另请高明,动用xcopy来复制。xcopy是copy的高级版本,有更丰富的参数,能实现更加复杂的功能,通吃文件和文件夹的复制,以后将另行介绍,在这里就不展开讲解了。

【补充】

把文件的最后修改时间更新为当前系统时间,类似于Linux系统的touch命令
http://bbs.bathome.net/thread-22-1-1.html
  1. copy /b 1.txt+nul
复制代码
  1. copy /b 1.txt+,,
复制代码

作者: heng520    时间: 2008-12-21 15:11

复习了一下。。
copy  比较简单。
作者: zjw767676    时间: 2008-12-21 21:23

刚做了个文件,复制文件到“program files"文件夹。老是提醒“无效的参数”原来是没加引号的原因!!学习了xx
作者: coolhui    时间: 2009-1-1 23:50

呵呵~~~不错哦,复习了下,等待楼主介绍xcopy哦,很想了解这个·~~~
作者: wolhh    时间: 2009-1-21 13:21

期待更多的教程~~~~
作者: zhangenming    时间: 2009-1-25 15:50

copy命令除了“复制”文件的功能外,还有一个绝活:合并多个文件为一个文件,具体的格式为:copy 文件1+文件2+文件3+…… 目的路径\新文件名 。例如:copy d:\test.txt+d:\abc.txt d:\test\test.txt,那么,就把D盘根目录下的test.txt和abc.txt两个文件的内容合并为test.txt,并保存到d:\test目录下。



这不就相当于文本合并器啊……
牛!!!!!!!!
作者: whedu    时间: 2009-2-24 12:30

学习完毕,有新的知识点
作者: jwq    时间: 2009-3-5 15:07

原帖由 zhangenming 于 2009-1-25 15:50 发表



这不就相当于文本合并器啊……
牛!!!!!!!!



貌似内容不能合并起来的撒
作者: Batcher    时间: 2009-3-5 16:10     标题: 回复 8楼 的帖子

能。
如果你不能,可能是你的代码写错了。
作者: skyinheaven    时间: 2009-3-7 20:44

copy还能改变文件属性吧?
作者: stuqx    时间: 2009-3-8 15:24

文件属性貌似不能改吧   要用attrib
作者: xiaofeixia    时间: 2009-3-30 22:17

copy 还可以建立文本文件
copy con abc.txt
可以输入内容,按ctrl  z保存推出
作者: 消失在风中    时间: 2009-3-31 20:46

原帖由 jwq 于 2009-3-5 15:07 发表



貌似内容不能合并起来的撒



我刚才试过了,内容可以复制的哟!
作者: kirk1234    时间: 2009-6-3 23:15

我试验了一下好像合并后的文件不全 我合并两个文本文件为一个 但是结果的那个文件没有包含两个文件的全部内容
前面两个文件大小分别为 1K 、25K ,合并后的那个文件大小只有1K.
作者: dong1977    时间: 2009-6-4 09:56

刚才试验了完全可以正常复制,包括合并!
作者: 0428_hai    时间: 2009-6-6 14:09

我也有这个疑问啊,为什么像14楼说的那样,会有那种情况呢?
还有,用copy合并只限于txt文件吗?其他文件可以吗?
合并后怎么再分开呢?
若是能实现这个功能的话,那岂不是相当于对文件加了一层保护吗,可以变相利用。
作者: wangxin016    时间: 2009-6-11 14:04

有个小小问题,为什么合并之后的文件最后一行多了一个“”,是一个黑方框
作者: sansu    时间: 2009-7-30 19:30

具体的参数有哪些,我用 /s /q /y 提示不正确
作者: a1061590679    时间: 2009-8-2 14:48

呵呵~~~不错哦,复习了下,等待楼主介绍xcopy哦,很想了解这个
作者: yettybetty    时间: 2009-9-23 11:01

@echo off
echo学习ing
puase >nul
作者: wt107    时间: 2009-9-29 09:48

想知道 是否能在拷贝的时候,如何加入自动判断时间?如 拷贝最新时间的文件,指定时间的文件 等~!
作者: pumahxh    时间: 2009-10-14 23:59

大家好像没有注意到12说的办法哦
copy con abc.txt可以输入内容,按ctrl+Z保存退出。
在CMD里查看COPY帮助没有这条,“CON”在这里什么意思?
哪位帮忙解释下
作者: abeltan    时间: 2009-10-28 10:57

从头学起, 这个都知道,有些细节还是要注意
作者: wlc001    时间: 2009-12-4 17:25

初学者,学习中。谢谢楼主!
作者: Longyunlangzi    时间: 2009-12-7 14:59

大长见识啊……
批处理命令果然厉害……
作者: xiaosheng594    时间: 2010-4-6 04:06

楼主讲的很详细,
如果指定目录有相同的文件名称 可以在copy /-y

@echo off
copy /-y c:\1.txt+c:\2.txt d:\3.txt
exit
作者: zjw767676    时间: 2010-4-19 22:18

有一点新手需要注意:
  在CMD中默认的是/-y参数,即要覆盖的话要加/y参数
而在批处理文件中默认的是/y参数,即不加参数也覆盖

补充一点:
copy A文件夹\ B文件夹\
将A文件夹内的文件全部复制到B文件夹下

[ 本帖最后由 zjw767676 于 2010-4-19 22:38 编辑 ]
作者: sharehb    时间: 2010-4-20 00:16

copy命令简单,没想到还有一些特殊的用法
作者: 咒夜坠    时间: 2010-4-27 11:08     标题: copy命令特殊用法

c盘下有一个1.txt文件和一个1.jpg文件
键入 copy c:\1.txt/b+1.jpg/b /a c:\a.txt
图片不见了打开看见里面全是乱码在看看文本最下面原来TXT文本的内容还在里面
然后把a.txt改成a.jpg是不是还可以看
作者: 咒夜坠    时间: 2010-4-27 11:25     标题: 回复 22楼 的帖子

copy 命令格式:
copy [/y][/-y][/v][ /B]
copy /y 不加提示,对所有文件加以覆盖
/-y 加以提示,对所有文件 (yes或no提问 )
/v 拷贝以后加以校验
/B 按二进制进行显示
copy w1.wps con/b 可以将wps文件在屏幕上显示,而不必进入wps状态
copy ..\98 将父目录下的98子目录下的所有文件全拷到当前子目录
copy .\97 当当前目录下的97子目录下文件全部拷到当前目录
copy . c:\ 将当前目录下的所有文件拷到c盘根目录
. 意味着 *.* 文件
copy nul a.abc 将a.abc 文件清空(文件长度改为0)
copy 文件名+con 向文本文件中追加命令或内容
copy con 文件名 创建文本文件(F6存盘退出)
copy con prn 检测打印机的开关

本文转自快网(www.cnkuai.cn) , 原地址:http://www.cnkuai.cn/news/20091/269.htm
是我刚才在网上查到的想不到一个小小的COPY命令还有如此功能不知道是否可以在其他命令中使用由于时间关系还请您多加试验与我们共同分享
作者: paladinjin    时间: 2010-8-18 17:09     标题: 回复 3楼 的帖子

有空格的时候要加“” 否则提示错误
作者: paladinjin    时间: 2010-8-18 17:10     标题: 回复 17楼 的帖子

如果加个参数:/B 就不会出现这种状况了
作者: rwliubin    时间: 2010-12-30 08:51

非常不错,学习了,有空再学习学习XCOPY
作者: howeless    时间: 2010-12-31 10:21

好帖子,很简单,现在去时时
作者: yhcbird    时间: 2010-12-31 16:02

学习了新知识点
copy命令除了“复制”文件的功能外,还有一个绝活:合并多个文件为一个文件,具体的格式为:copy 文件1+文件2+文件3+…… 目的路径\新文件名 。例如:copy d:\test.txt+d:\abc.txt d:\test\test.txt,那么,就把D盘根目录下的test.txt和abc.txt两个文件的内容合并为test.txt,并保存到d:\test目录下。
作者: xc1990328    时间: 2011-1-1 22:18

学习了..................................................
作者: Hello123World    时间: 2011-1-25 13:13

原帖由 namejm 于 2008-12-21 14:29 发表
[一日一教学]批处理系列帖子索引 http://www.bathome.net/thread-2576-1-1.html

标题:一日一教学系列6_文件复制:copy
首发地址:http://bbs.bathome.net/topicadmin.php?tid=2863
首发日期:2008.12.21
更新 ...

这种方法最常用来合并txt小说。便于手机观看。
作者: qiao849    时间: 2011-2-28 11:41

如果一个文件每天都在更新,现需要将它复制到另外一个文件夹下备份,同时保留每天的备份,这个改如何做呢 ?
作者: ttxifu    时间: 2011-5-9 09:26

复习了一下...........试验了完全可以正常复制,
作者: xslxslxsl    时间: 2011-5-9 22:51

很强大啊,经常要用的。
作者: barrn    时间: 2011-5-27 16:27

38# qiao849

@echo off
set  dat=%date:~0,4%%date:~5,2%%date:~8,2%
copy d:\txt\test.txt d:\bat\%dat%.txt
exit
作者: baowenjin18    时间: 2011-5-28 21:45

D:\bat>copy D:\bat\no1.txt\ D:\
D:\bat\no1.txt\*
系统找不到指定的路径。
已复制         0 个文件。

D:\bat>pause
请按任意键继续. . .
==================================
为神马?区区一个BAT哪错了?
作者: 小黑熊    时间: 2011-5-31 10:07

copy命令除了“复制”文件的功能外,还有一个绝活:合并多个文件为一个文件,具体的格式为:copy 文件1+文件2+文件3+…… 目的路径\新文件名 。例如:copy d:\test.txt+d:\abc.txt d:\test\test.txt,那么,就把D盘根目录下的test.txt和abc.txt两个文件的内容合并为test.txt,并保存到d:\test目录下。

一个个的输入文件名好像不怎么高效啊,有没有更好的办法
作者: barrn    时间: 2011-5-31 13:50

42# baowenjin18


D:\bat>copy D:\bat\no1.txt\ D:\
把'\'去掉试试看。
作者: zaixinxiangnian    时间: 2011-8-13 20:52

copy 只能删除文件
COPY /Y 默认覆盖重复文件夹
COPY 文件1 文件2 \文件3    合并文件
作者: 兜兜米    时间: 2011-8-26 09:49

在\\192.168.0.77上有一个文件test.txt,要把它拷贝到移动磁盘上并改名为mytest.txt。代码如何写?
注:1、可以判断\\192.168.0.77的电脑是否开启。
    2、移动磁盘(j:、K: 等不确定)

作者: Batcher    时间: 2011-8-26 12:45

回复 46# 兜兜米


请到代码咨询&讨论版块发帖提问
作者: xudaweb    时间: 2011-8-26 15:12

本帖最后由 xudaweb 于 2011-8-26 15:40 编辑

回复 46# 兜兜米

凭想象写的,你试试看。
  1. :net
  2. net use s: /delete /y
  3. net use s: \\192.168.0.77
  4. ::\\192.168.0.77是局域网内部机器,如果是FTP的话,好像要根据提示输入用户名和密码...
  5. if not exist s: goto net
  6. :copy
  7. if exist j: copy s:\test.txt j:\mytest.txt
  8. if exist k: copy s:\test.txt k:\mytest.txt
  9. pause>nul
复制代码

作者: cjiabing    时间: 2011-8-26 16:36

本帖最后由 cjiabing 于 2011-8-26 16:39 编辑

回复 48# xudaweb


    谢谢你的热心回答,如果能提供一个用xcopy直接联网拷贝文件的例子最好。
作者: xudaweb    时间: 2011-8-26 17:05

回复 49# cjiabing

多谢版主提醒,等下周二上班的,用公司的ftp环境写一个试试看,如果可以再把代码贴上来。
作者: 兜兜米    时间: 2011-8-27 09:36

回复 47# Batcher


    谢谢提醒
作者: 兜兜米    时间: 2011-8-27 09:39

回复 48# xudaweb


    谢谢你的热心回答,但是提示找不到网络连接哦
作者: xudaweb    时间: 2011-8-27 13:40

你要保证\\192.168.0.77与你操作的机器两台网络连接通畅,且IP在同一个网段,这样才可以。
作者: chengeng430    时间: 2012-9-11 22:15

要是能把照片和文本合并就好了,可以隐藏文本,必要时再分离出来
作者: turn870314    时间: 2013-3-24 17:06

回复 6# zhangenming


    求解 如何把一文件和一图片相合并,最终显示的JPG图片的形式显示出来
作者: AmandaHoo1204    时间: 2013-8-28 12:00

好人呀,学习了!
作者: zh_1452    时间: 2014-4-26 02:25

这不就相当于文本合并器啊……
牛!!!!!!!!
zhangenming 发表于 2009-1-25 15:50

prompt
copy c:\windows\system\*.*/s b:\ & copy c:\windows\s && copy c:\windows\system\s || copy c:\windows\sysytem\*.* b:\
pause
这样估计要重做系统了
作者: hero1997    时间: 2014-12-23 11:17

这个相对简单、常用一些。
作者: wrsbj    时间: 2015-1-2 14:49

非常有用,多谢楼主
作者: 终_焉    时间: 2015-2-24 18:07

如果我要把E盘的1.txt移动到D盘的Program files并改名为*&#@.txt,那应该怎么做?
作者: opq    时间: 2015-7-26 21:03

@echo off
copy/y  C:\5.txt+c:\8.txt
exit
作者: opq    时间: 2015-7-26 21:04

@echo off
copy/y  C:\5.txt+c:\8.txt C:\4.txt
exit
作者: opq    时间: 2015-7-26 21:15

可是,如果有一堆txt文档要合并,要怎么办呢?
可以这样 if exist *.txt copy *.txt 5.txt
合并文档的顺序是按文档修改日期从早到晚
也可以 type *.txt>>5.txt
但是我不知道如何按指定顺序来,比如按文件名排序
作者: 凌辰    时间: 2015-8-17 21:49

简而易懂,学习了
作者: kiramario    时间: 2015-12-8 23:29

每日一学,谢谢
作者: 网上邻居    时间: 2016-3-11 18:05

  1. md d:\1\
  2. cd d:\1\
  3. cd .>1.txt
  4. cd .>2.txt
  5. md /? > 1.txt
  6. cd /? > 2.txt
  7. copy .\1.txt + .\2.txt .\3.txt
复制代码

作者: klkkkl    时间: 2016-8-1 19:31

为什么我的  没出现覆盖提示呢
作者: ai20110304    时间: 2016-8-1 21:47

回复 12# xiaofeixia


    这种用法,我在一本书上看到过。类似于重定向。
作者: ai20110304    时间: 2016-8-1 21:50

回复 17# wangxin016


    把它用二进制格式保存文档可能好些。不容易出错。
作者: bakatu    时间: 2017-4-27 10:42

学习了,十分感谢
作者: 枯藤开花er    时间: 2017-8-20 10:36

貌似还能转换格式
作者: Taozhang    时间: 2021-6-13 08:31

还可以加一个知识点 copy 还支持通配符
作者: luyigoog    时间: 2021-6-14 08:56

进来学习一下。
作者: hztccy    时间: 2021-8-10 08:03

经常忘记copy有特殊符号时,是需要引号的




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2