该命令是文件拷贝命令。它有七种格式:
1.copy 源文件全名 目标文件全名
2.Copy 源文件全名 目标路径
3.Copy 源路径 目标路径
4.Copy 源路径 目标文件全名
5.Copy 源文件全名
6.Copy 源路径
7.Copy 文件全名1+文件全名2+文件全名3++文件全名n 目标文件全名(
不带通配符)
下面分别说明。
1.copy 源文件全名 目标文件全名
该格式把源文件全名指定的一个或一批文件拷贝到目标文件全名所指定的路
径里,新的文件名使用目标文件全名里指定的文件名。例如:
(1)copy c:workbas c:temptxt
该命令把c盘的work目录里所有扩展名为bas的文件拷贝到c盘的temp目录里,
所得到的每个文件的扩展名都变成了txt。
(2)copy datfiletxt
该命令把当前目录下的所有文件都拷贝到当前盘的根目录下的dat目录内的f
iletxt文件里,也就是说,把当前目录里的所有文件都合并成了一个文件。
(3)copy c:\workzrculibas a:\myfiletxt
该命令把c盘的work目录里的zrculibas文件拷贝到a盘里,并且重新起了个
文件名叫myfiletxt。
2.Copy 源文件全名 目标路径
该格式把源文件全名所指定的一个或一批文件拷贝到目标路径里,文件名保
持不变。
(1)copy c:\aaa
该命令把当前目录里的所有文件拷贝到c盘的aaa目录里。保持文件名不变。
(2)copy workzrculiexe a:
该命令把当前盘里的work目录里的zrculiexe拷贝到a盘根目录里。
(3)copy c:dataaa1031x c:dat1
该命令把c盘的dat目录里的文件aaa1031x拷贝到c盘的dat1目录里。
(4)copy a:
该命令把当前目录的父目录里的所有文件拷贝到a盘里。
3.Copy 源路径 目标路径
该格式把源路径所指定目录里的所有文件拷贝到目标路径所指定的目录里,
并且保持文件名不变。
(1)copy c:work
该命令把c盘的work目录里的所有文件拷贝到根目录里,因为work目录的父目
录是根目录。
(2)copy a: c:dat
该命令把a盘根目录里的所有文件拷贝到c盘的dat目录里。
4.Copy 源路径 目标文件全名
该格式把源路径所指定的目录里的所有文件拷贝到目标文件全名所指定的那
个目录里,并且把文件名改成目标文件全名所指定的文件名。
(1)copy c:work a:bak
该命令把c盘的work目录里的所有文件拷贝到a盘根目录,并且把所有文件的
扩展名改成bak。
(2)copy a:def c:datfiledat
该命令把a盘的def目录里的所有文件拷贝到c盘的dat目录里的filedat文件
里。就是说把a盘的def目录里的所有文件合并成了一个filedat文件。
(3)copy c:myfile d:datbbb
该命令把c盘的myfile目录里的文件全部拷贝到d盘的dat目录里,并且把文件
的主名全改成bbb。
5.Copy 源文件全名
该格式把源文件全名所指定的一个或多个文件拷贝到当前目录里来,保持文
件名不变。
6.Copy 源路径
该格式把源路径所指定的那个目录里的所有文件拷贝到当前目录里来,保持
文件名不变。
7.Copy 文件全名1+文件全名2+文件全名3++文件全名n 目标文件全名(
不带通配符)
该格式的功能是把文件全名1+文件全名2+文件全名3++文件全名n所指定的
n个文件合并成一个文件,放到目标文件全名所指定的目录里,新的文件名是目标
文件全名所指定的那个文件名。
Copy命令主要就这七种格式。它也有很多选项,不过对一般使用者来说用不
上,所以就不提了。感兴趣者可以用copy /来查看。
当用copy命令把一个或一批文件拷贝成另外的文件后,原来的那一个或一批文
件还在,不会丢失。
一个目录里不能出现同名文件。但是用copy命令任何一种格式拷贝文件时,
很有可能会在目标目录里产生同名文件,这种情况DOS怎么处理?这时,copy命令
会告诉你,出现了同名文件,并提供给你几种选择:1用新拷贝过来的文件代替
原有文件,2保留原有文件,新的和原有文件同名的文件将不被拷贝过来。3所
有同名的文件都用新文件代替。详细的提示信息和相应的 *** 作如下所述:
DOS的提示:
Overwrite "同名的文件" (YesNoAll)
意思是你要覆盖这个文件吗?你可以分别键入y,n,a代表选择了Yes,No,All。
如果键入了y,意思是“是的,我要用新文件来代替这个老文件”。如果选择了n
,意思是“不,我不想用新文件来代替这个老文件”。那么老文件将保留,新文
件将不被拷贝过来。注意前两个选择都只针对现在这个同名文件而言,接下来又
有同名文件的话,DOS还会再次询问。如果键入了a,意思是“是的,我要用新文
件来代替老文件,接下来再出现同名文件的话,我也是这个意思”。那么接下来
再出现同名文件的话,DOS就不会再提示了。当然,这个选择只是针对这一次cop
y *** 作而言。
如果你指定的源文件不存在的话,DOS会提示:
File not found--<文件名>
0 file(s) copied
如果你指定的源目录或目标目录不存在的话,DOS会提示:
Invalid directory!
五. Xcopy
这个命令也是文件拷贝命令。与copy的语法一样,最好用的一点是它有一个
选项“/s”
想一想copy命令,如果我们要把c:ddd目录里的所有内容包括文件和子目录拷贝
到另外的地方,我们得一个目录一个目录地分别拷贝。但是如果用xcopy的话,只
须在命令后面加个“/s”,该命令就会把源目录里所有的内容,包括源目录里一
切深度的子目录结构全部复制到目标目录里,最后的结果是目标目录里也有了和
源目录里一样的自目录结构。
六. Diskcopy
这个命令也是文件拷贝命令,专门用来将一张软盘上的所有内容完整地复制
到另一张软盘上。所以你得先准备一张源盘,就是你准备复制的那张盘。然后还
要有一张目标盘,用来把源盘上的内容复制到它上面。目标盘可以是新盘,也可
以是用过的盘。该命令的常用格式:
diskcopy a: a:
该命令首先提示你把源盘插入a驱动器。按照提示插好源盘后,按回车键,电
脑开始读源盘盘上的内容,读完后提示你将目标盘插入a驱动器。照提示做好后按
回车键,电脑开始往目标盘上写入从源盘读来的内容。写完后DOS会提示你写完了
,并问你是否要把源盘的内容写到另外一张目标盘上。如果你回答了y,那么就按
照接下来的提示往a驱动器里插入另外的目标盘,回车。如此循环往复,一张源盘
可以赋值很多张目标盘。如果你回答了n,那么diskcopy的执行就结束了。结果是
你的目标盘上的内容和源盘一模一样。应当COPY到 system32 下面,文件名应当是
SHELL32DLL
COPY命令
COPY e:\SHELL32DLL C:\windows\system32
如果系统正在使用它,也许无法成功 COPY。 你可以尝试在系统启动初期,进安全模式,在命令窗打上面的COPY命令。做过iOS开发的同学肯定都用过copy属性,但是copy属性和strong的区别可能还有很多人并不是很清楚,这一篇文章就专门讲一讲copy这个属性。
首先抛出本篇文章的结论:
可以简单的把copy属性理解为把目标参数copy,也就是拷贝之后再赋值给成员变量。
以下是生成set方法的源码,可以参考。
static inline void reallySetProperty(id self, SEL _cmd, id newValue, ptrdiff_t offset, bool atomic, bool copy, bool mutableCopy)
{
if (offset == 0) {
object_setClass(self, newValue);
return;
}
}
从这里可以看出来copy和strong的区别主要在于copy这个动作。
那么copy的作用到底是什么?这个动作对于不同Object又有什么不同作用呢?copy和mutableCopy又有什么区别呢?
这里再一次抛出结论:
对不可变变量(例如NSString)进行不可变拷贝(copy),是浅拷贝(引用计数+1),其他情况都是深拷贝。
对不可变变量(例如NSString)来说定义成copy,更加安全,但是效率也更低
为什么更加安全?
我们把一个变量定义成NSString,那一定是我们不希望它的值被任意改变。如果定义属性的时候使用strong,那就有可能存在被任意,或者意料之外改动的情况。
我们来看一个例子:
输出结果:
由于strongString是定义成了strong,在被赋予一个NSMutableString的变量mstr之后,对mstr进行修改,strongString也被修改了。这相当于对一个不可变变量间接进行了修改。
为什么更低效?
原因很简单,因为需要深拷贝,需要重新开辟空间并且赋值。
但是,不是把属性定义成copy就万事大吉了,需要注意的是在类内部还是需要使用selfcopyedString的方式或者[self setCopyedString]调用,如果直接_copyedString=mstring的方式还是不会起到效果,因为没有调用setter方法
虽然对于Block来说,ARC环境下使用copy和strong的效果一样(因为即使是定义成strong,赋值的时候依然会为我们拷贝),但是我们最好使用copy修饰。
原因跟Block的内存分布有关系。
Block根据他们在内存的位置分为三种:
1NSStackBlock(在栈区,超出作用域就会自动释放)。
2NSMallocBlock(在堆区,生命周期由程序员手动管理)。
3NSGlobalBlock(全局区)。
对于栈区的Block可以进行一次拷贝,把栈区的Block拷贝到堆区。
在MRC下必须使用copy,以完成拷贝。沿用到ARC下最好也用copy,以表明其工作原理。
关于Block的内存分布是一个非常复杂的话题,这里就不展开了。| 源对象类型 |拷贝方法 | 副本对象类型 |是否产生了新对象| 拷贝类型 |
| ------------- |:-------------:|
| NSString | copy | NString | NO| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutableString | YES| 深拷贝(内容拷贝) |
| NSMutableString | copy | NString | YES| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutableString | YES| 深拷贝(内容拷贝) |
| NSArray | copy | NSArray | NO| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutableArray | YES| 深拷贝(内容拷贝) |
| NSMutableArray | copy | NSArray | YES| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutableArray | YES| 深拷贝(内容拷贝) |
| NS | copy | NS | NO| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutable | YES| 深拷贝(内容拷贝) |
| NSMutable | copy | NS | YES| 浅拷贝(指针拷贝) |
| | mutableCopy | NSMutable | YES| 深拷贝(内容拷贝) |copy命令的格式
copy〔空格〕源文件名〔空格〕目的文件名
无论源文件还是目的文件
1、如果不指明驱动器名,即为当前驱动器;
2、如果不指明目录,则为前目录;
3、如果不指明文件名,则为相同文件名。
如复制autoexecbat文件可以输入copy autoexecbat autoexecoldCOPY文件复制命令
1.功能:拷贝一个或多个文件到指定盘上。
2.类型:内部命令
3.格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]
4.使用说明:
(1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;
(2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;
(3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;
(4)文件名中允许使用通配举“”“?”,可同时复制多个文件;
(5)COPY命令中源文件名必须指出,不可以省略。
(6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略;
(7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略;
(8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:COPY;[源盘][路径]〈源文件名1〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉;
(9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY CON [盘符:][路径]〈文件名〉;
(10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格!
DOS时代,Copy命令恐怕是最受欢迎也最常用一个DOS内部命令,但在Windows横行的今天,它渐渐被用户遗忘,似乎变得可有可无。其实这个命令远远不止“拷贝”这么简单,好好利用它,会收到意想不到的效果。
用Copy实现远程上传和下载
用Copy命令拷贝文件大家肯定都知道,但你知道吗?Copy还支持远程文件的拷贝!比如Copy C:\SRVEXE \\210\ADMIN$可以把程序SRVEXE“上传”到对方的ADMIN$共享目录下,当然反过来也可以,这样就成“下载”了:Copy \\210\ADMIN$\SRVEXE C:\就能把对方的ADMIN$共享目录下的SRVEXE文件下载到本地的C盘中。
用Copy将秘密藏在别人肚子里
DOS的Copy命令可以将几个同类型的文件合并成一个文件,比如:多个txt文件,其实通过它还能将一个文本文件合并到一个非文本文件中,实现隐藏秘密的效果。比如你在D盘根目录有一个重要的文本文件:001txt,想对其进行隐藏。
找一个MP3歌曲,体积最好不要太大(500KB左右为宜),比如:wanfeimp3(假设也放在D盘根目录),输入:Copy wanfeimp3/b + 001txt/a wanfei-1mp3,这样会生成一个新文件wanfei-1mp3。用Winamp打开它,歌曲没有变化。按住Shift键右击wanfei-1mp3,选择“打开方式”并选择EmEditor之类的文本编辑器打开该文件,看到什么了?一堆乱码?但如果按下Ctrl+End组合键将光标移至文件的尾部,是不是001txt文件中的内容?
小提示:其中参数/b指定以二进制格式复制、合并文件;参数/a指定以ASCII格式复制、合并文件。这里要注意文件的顺序,二进制格式的文件应放在加号前,文本格式的文件放在加号后。有一点要提醒大家:就是这个文本文件的前面最好至少空3行,这样它头部的内容就不易丢失。
同样道理,你可以把文件藏进、WAV声音文件,甚至还能在Word、Excel等文档中藏进秘密,比如:
Copy wanfeijpg/b + 001txt/a wanfei-1jpg(把001txt藏进wanfei-1jpg)
Copy wanfeidoc/b + 001txt/a wanfei-1doc(把001txt藏进wanfei-1doc文档)
Copy wanfeiwav/b + 001txt/a wanfei-1wav(把001txt藏进wanfei-1wav文件)
Copy wanfeiexe/b+ 001txt/a wanfei-1exe(把001txt藏进wanfei-1exe文件)C# Copy() 方法用于创建一个新的 String 实例,其值与指定的 String 相同。它是 String 类的静态方法。它的返回类型是字符串。
public static string Copy( string str )
创建一个与指定字符串具有相同值的新的 String 对象。
stringCopy(CjY);
string是关键字,Copy()是调用的方法,CjY带表字符串变量。
Talk is cheap, show me the code 空谈误国,实干兴邦,下面就是案例。
设计字符串变量GjY,CjY,并用srtingcopy()把GjY的值复制给CjY,GjY中的值是字符串“ChenJie”,再分别出输两个变量的值测试看是不是一样的。
大家可以看到经过copyt后,两个变量的值是一样的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)