欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

批处理入门手册之批处理常用DOS命令篇(attrib、del、copy、xcopy)

程序员文章站 2022-03-08 08:12:31
1.2 学习attrib  del  copy  xcopy命令 学习要点: 1。设置文件属性:attrib 2。删除命令:del 3...

1.2 学习attrib  del  copy  xcopy命令

学习要点:
1。设置文件属性:attrib
2。删除命令:del
3。复制文件:copy
4。复制文件(夹):xcopy

一、设置文件属性:attrib

显示或更改文件属性。
attrib [ r | -r] [ a | -a ] [ s | -s] [ h | -h] [[drive:] [path] filename] [/s [/d]]

     设置属性。
  -    清除属性。
  r   只读文件属性。
  a   存档文件属性。
  s   系统文件属性。
  h   隐藏文件属性。
  [drive:][path][filename]   指定要处理的文件属性。
  /s  处理当前文件夹及其子文件夹中的匹配文件。
  /d  也处理文件夹。


1。查看文件的文件属性
格式:attrib [drive:][path][filename]

例1,
attrib d:\ pagefile.sys
查看d:\ pagefile.sys文件的属性。

2。修改文件的属性。
格式:attrib ?属性

例1,
attrib –h d:\ pagefile.sys
消除d:\ pagefile.sys的“隐藏”属性。

例2,
attrib s h d:\ pagefile.sys
给d:\ pagefile.sys设置“系统”和“隐藏”属性。

3。批量文件处理

例1,
attrib h d:\123\*.bat /s
通过/s参数可批量将d:\123及其子目录下的所有bat文件设置为“隐藏”属性.

例2,
attrib h d:\123 /s /d
将d:\123及其下所有同名为123的子目录设置为“隐藏”属性.参数/d必须在批量设置文件属性的同时,对指定目录及
其下所有子目录进行文件属性操作。参数/d可以理解为“directory”(目录),也就是说/d 必需和/s一起使用。


思考:

 “attrib h d:\123 /s /d”和“attrib h d:\123\*.* /s /d”有什么区别呢?
前者只有d:\123以及它同名的子目录设为了“隐藏”,而其它文件及子目录都没有设置“隐藏”。
后者则将d:\123下的所有文件及子目录设置了“隐藏”属性,但d:\123目录没有设置“隐藏”属性。

二、删除命令:del

删除一个或数个文件。
del [/p] [/f] [/s] [/q] [/a[[:]attributes]] names
erase [/p] [/f] [/s] [/q] [/a[[:]attributes]] names

  names         指定一个或数个文件或目录列表。通配符可被用来
                删除多个文件。如果指定了一个目录,目录中的所
                有文件都会被删除。

  /p            删除每一个文件之前提示确认。
  /f            强制删除只读文件。
  /s            从所有子目录删除指定文件。
  /q            安静模式。删除全局通配符时,不要求确认。
  /a            根据属性选择要删除的文件。
  attributes      r  只读文件                     s  系统文件
                  h  隐藏文件                     a  存档文件
                  -  表示“否”的前缀

基本格式:del [drive:][path][filename]

例1,
del d:\123\abc.txt
删除abc.txt


/p 删除每一个文件之前提示确认。

例2,
del /p d:\123\*.*
删除d:\123目录下所有文件,如果你想让它在删除前都询问你是否删除,我们可以加上/p参数,防止误删除。


/s 从所有子目录删除指定文件。

例3,
del /s d:\123\*.*
删除d:\123目录及其子目录下所有文件。
通过使用/s参数后,del命令就会在指定目录(如未指定则在当前目录)及其子目录中搜索所有指定文件名的文件并删
除。


/q 安静模式。删除全局通配符时,不要求确认。

例4,
del /s /q d:\123\*.*
删除d:\123目录及其子目录下所有文件。
通过/q参数则无需确认直接删除,在使用此参数时要小心!!


/a 根据属性选择要删除的文件。

例5,
del /ar /s d:\123\*.*
删除d:\123目录及其子目录下所有只读属性的文件。
这里我们通过/a:attributes 参数对指定属性的文件选择删除。文件属性attributes,可选的有r(只读)、s(系统)
、h(隐藏)、a(存档)。 


三、复制文件:copy

copy只能复制文件,不能复制文件夹。

1。单个文件的复制

格式:copy source[drive:][path][filename]  [destination [drive:][path][filename]]
即copy 要复制的源文件(包括路径和文件名)  文件复制的目标路径[\文件名],当[destination [drive:][path]
[filename]]缺省时则为当前目录。

例1,
copy c:\123.txt d:\
把123.txt复制到d:\目录下。如果此操作成功,命令行窗口中会提示“已复制 1个文件”。

例2,
copy c:\123.txt d:\abc.bat
把123.txt复制到d:\目录下,并把它修改为abc.bat,这里修改了文件名和它的格式。

例3,
copy .\123
把当前目录下的123子目录中的文件全部拷到当前目录。这里好像有点难理解,呵呵,解释一下:比如当前目录是
c:\windows,它有很多子目录的,现在就把它的一个子目录123里面的文件全都拷到当前目录c:\windows,这样应该明
白了吧!~

2。批量复制文件

例1,
copy c:\123 d:\abc
将c:\123 目录中所有文件复制到d:\abc目录中.

例2,
copy c:\123\*.rm d:\abc /y
将c:\123 目录中所有rm格式的文件复制到d:\abc目录中,当目标目录中已经存在了和源目录中即将复制的文件相同文
件名的文件时,就会出现如“改写x:\xx吗?(yes/no/all):”这样的提示,让你选择是覆盖、不覆盖还是全部覆盖,
通过参数/y(复制单个文件或批量复制时皆可使用),可以实现重名文件无须确认直接覆盖。

3。合并文件
格式:copy /b 文件1+文件2+……文件n 合并后的文件名

例1,
copy /b d:\1.mp3 d:\2.mp3 e:\3.mp3
把1.mp3和2.mp3合并成3.mp3。

例2,
copy /b d:\1.txt d:\2.mp3
把1.txt和2.mp3合并,这里没有指定合成后的文件名哦,缺省情况下,合并后的文件名是命令中的第一个文件的名。
在这里,即把2.mp3合并进了1.txt。


★在尾部隐藏了文本数据的图片文件,在使用其他软件进行编辑并保存后,隐藏的文本数据有可能会丢失。
★mp3文件在使用此方法连接后,能实现连续播放。
★合并图片/歌曲这样的二进制文件必须使用/b参数(b代表binary,二进制),否则合并将会失败;另一个合并参是/a
(a代表ascii,文本文件),只能用于纯文本的合并。两参数不能同时使用,二进制方式可以合并文本和二进制文件,
而文本方式则只能合并文本。

四、复制文件(夹):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
 可省略。指定要复制的文件的目标。该参数可以包含驱动器盘符和冒号、目录名、文件名或者它们的组合。
如果省略 destination,xcopy 命令将文件复制到当前目录。


xcopy可使用的参数太多了,这里只选几个常用的来讲一下。

/s 复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。

例1,
xcopy /s d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,不包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)


/e 复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。

例2,
xcopy /e d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)


/h 复制具有隐藏和系统文件属性的文件。默认情况下xcopy 不复制隐藏或系统文件。

例3,
xcopy /e /h d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。加上了/h参数后,xcopy 复制隐藏或系统的文件


/t 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 选项。


/y 禁止提示您确认要覆盖现存的目标文件。
当目标目录中已经存在了和源目录中即将复制的文件相同文件名的时候,就会出现“改写 x:\xxx  (yes/no/all)?”
这样的提示,让你选择是覆盖、不覆盖还是全部覆盖时,通过参数/y,可以实现重名文件无须确认直接覆盖。


★注意指定 destination 是文件还是目录。
如果 destination 不包含现有目录且不以反斜杠 (\) 结尾,会出现下列消息:

 does destination specify a file name
 or directory name on the target
 (f = file, d = directory)?

系统将会询问你
目标 x:\xxx 是文件名还是目录名
(f = 文件,d = 目录)?
 如果要将一个或多个文件复制到一个文件,请按 f。如果要将一个或多个文件复制到一个目录,请按 d。


思考:

比较一下xcopy /e d:\123 e:\kkk\  和 xcopy /e d:\123 e:\kkk 两者之间有什么不同?
两者都是复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录,但前者不会询问你
目标e:\kkk 是文件名还是目录名
(f = 文件,d = 目录)?