BAT批处理之文件与文件夹操作代码(附xcopy命令详解)

批处理中的文件、文件夹操作,xcopy命令的用法。

一,建bat文件自动执行复制,删除命令。

例1:复制cd.dll文件至windows\system32的bat文件内容:

代码如下:

copy cd.dll %windir%\system32

例2:卸载windows\system32目录中的cd.dll,即把上面复制的文件删除:

代码如下:

del %windir%\system32\cd.dll

例3:删除download文件夹中的文件,例子如下:

代码如下:

del C:\DOWNLOAD\*.*

注意,以处的del命令只能删文件,不能删文件夹。
删除文件夹使用rd命令,如下:

代码如下:

rd Filemon

这里filemon文件夹和该bat文件在同一目录下,就省去具体路径了。但rd只能删除空文件夹.
要删除文件夹及其里面的所有子目录和文件,用rd命令带/s /q参数,

/s参数表示删除该文件夹及其下面的子目录和文件
/q参数表示,不需要确认

例子:

代码如下:

rd 123 /s /q

二,创建文件夹

例:在E:\My documents下面一次创建3个新文件夹:Newfolder1,Newfolder2,Newfolder3

代码如下:

@echo off
md "E:\My documents\Newfolder1"
md "E:\My documents\Newfolder2"
md "E:\My documents\Newfolder3"

三,执行程序,打开文件

例1:执行C盘下的WinWord.exe程序

代码如下:

start C:\WinWord.exe

例2:用某个程序打开某个文件,如用TheWorld.exe打开一个htm文件

代码如下:

start d:\TheWorld\TheWorld.EXE C:\我有一个恋爱.htm

[注意]:不论是程序或文件路径中含有空格,都必须用引号括起来:

代码如下:

start d:\TheWorld\TheWorld.EXE "e:\My documents\我有一个恋爱.htm"

所有程序中的引号不能是全角的,必须用半角的格式,所以输入引号前最好关闭汉字输入系统

XCOPY 还有众多的功能, 是加参数来完成的。上面的/s /e 参数的作用分别是把子目录和空目录都复制过去,一些使用举例和参数说明如下:
1、如只是单纯地复制 E:\ 盘上所有文件到 D:\ 盘上,就输入“ xcopy e:\*.* d: /s /h "就行啦!如果在复制过程中,你不要他复制文件啦!那就按键盘热键“Ctrl " +"Pause /break" 二个热键 来中断复制。
2、如果想把E:\ 盘上所有文件复制到D:\盘上,分为今天复制一点,明天再接着复制一些,后天再接着复制一些。或者是某种原因上次没有复制完成,今天想接着复制。(这种情况是经常在复制文件中出现的)那可怎么办才好呢?
那就输入“ xcopy e:\*.* d: /s /h /d /y ”就行啦。他能查出那些文件是已经复制过去啦,那些文件还没有复制过去的。
3、当然我们也会碰到这种情况,一些文件我们已经修改过啦!网上面又有最新版本的啦。原来备份的那份文件我们要及时更新啦。那怎么才能同步更新呢?当然我们可以把最新的好份文件复制过去,这也是一种解决办法。
如果修改的文件有很多的,自己到时候也记不清楚那份文件是更新过的。这么多的原来备份的那份文件都要更新,都要复制过去,可不是件省力气的活,而且容易出错和一些文件被忘记啦!
那和上面一样也同样输入" xcopy e:\*.* d: /s /h /d /y "就行啦!
4、还有一种情况我们经常也碰到的,因为复制某个文件出错或者这个文件在使用中,而停止了复制工作,(比如,复制C 盘上的 windows xp )我们这时候想跳过某个出错的文件和某个正在使用中文件而继续复制其他文件。
在多加入一个参数" /c "就是 " xcopy e:\*.* d: /s /h /d /c /y "就行啦!
5、有时候我们想XCOPY 变为自动复制,并且复制完成后关闭电脑,可以建立一个批处理文件,新建文本文档,更名为XCOPY.BAT 当然扩展名原来是TXT 格式的要更名为BAT 在这个 XCOPY.BAT 中输入

代码如下:

xcopy e:\*.* d: /s /h /c /y
shutdown -s

然后双击xcopy.bat 运行它,你这时候可以出去玩啦。电脑会自己复制备份完成文件然后自动关闭电脑。

XCOPY source [destination] 参数(如 /s /e)
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 禁止提示以确认改写一个
现存目标文件。
/-Y 导致提示以确认改写一个
现存目标文件。
/Z 用重新启动模式复制网络文件。

Xcopy 命令
复制文件和目录,包括子目录。

语法
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z]

参数
Source
必需的。指定要复制的文件的位置和名称。该参数必须包含驱动器或路径。
Destination
指定要复制的文件的目标。该参数可以包含驱动器盘符和冒号、目录名、文件名或者它们的组合。
/w
在开始复制文件之前将显示以下消息并等待您的响应:
Press any key to begin copying file(s)

/p
提示您确认是否要创建每个目标文件。
/c
忽略错误。
/v
在写入目标文件时验证每个文件,以确保目标文件与源文件完全相同。
/q
禁止显示 xcopy 消息。
/f
复制时显示源文件名和目标文件名。
/l
显示要复制的文件列表。
/g
创建解密的目标文件。
/d[:mm-dd-yyyy]
只复制那些在指定日期或指定日期之后更改过的源文件。如果不包括 mm-dd-yyyy 值,xcopy 会复制比现有 Destination 文件新的所有 Source 文件。该命令行选项使您可以更新更改过的文件。
/u
只从 source 复制 destination 中已有的文件。
/i
如果 Source 是一个目录或包含通配符,而 Destination 不存在,xcopy 会假定 destination 指定目录名并创建一个新目录。然后,xcopy 会将所有指定文件复制到新目录中。默认情况下,xcopy 将提示您指定 destination 是文件还是目录。
/s
复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。
/e
复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。
/t
只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 命令行选项。
/k
复制文件,如果源文件具有只读属姓,则在目标文件中保留该属姓。默认情况下,xcopy 会删除只读属姓。
/r
复制只读文件。
/h
复制具有隐藏和系统文件属姓的文件。默认情况下,xcopy 不复制隐藏或系统文件。
/a
只复制那些具有存档文件属姓设置的源文件。/a 不修改源文件的存档文件属姓。有关如何通过使用 attrib 来设置存档文件属姓的信息,请参阅“”。
/m
复制具有存档文件属姓设置的源文件。与 /a 不同,/m 关闭在源中指定的文件的存档文件属姓。有关如何通过使用 attrib 来设置存档文件属姓的信息,请参阅“”。
/n
使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统需要 FAT 文件系统命名约定(即 8.3 个字符)时,需要 /n。目标文件系统可以是 FAT 或 NTFS。
/o
复制文件所有权与自由选择的访问控制列表 (DACL) 信息。
/x
复制文件审核设置和系统访问控制列表 (SACL) 信息(包含 /o)。
/exclude:filename1[+[filename2]][+[filename3]]
指定包含字符串的文件列表。
/y
禁止提示您确认要覆盖现存的目标文件。
/-y
提示您确认要覆盖现有目标文件。
/z
在可重启模式中通过网络复制。
/?
在命令提示符显示帮助。
注释
使用 /v
XOX

使用 /exclude
列出每个文件的单独行中的每个字符串。如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配,就从复制进程排除该文件。例如,如果指定字符串 "\Obj\",则会排除 Obj 目录下的所有文件。如果指定字符串 ".obj",则排除具有 .obj 扩展名的所有文件。

使用 /z
如果在复制过程中丢失连接(例如,如果用于连接的服务器脱机),复制过程将在重新建立连接后恢复。/z 也显示每个文件完成的复制操作的百分比。

在 COPYCMD 环境变量中使用 /y
可在 COPYCMD 环境变量中使用 /y。在命令行上使用 /-y 可以覆盖该命令。默认情况下,会提示您覆盖,除非您从批处理脚本内运行 copy。

复制加密的文件
将加密文件复制到不支持 EFS 的卷会导致错误。应首先解密文件或将文件复制到支持 EFS 的卷中。

附属文件
要附加文件,请指定单个目标文件,多个源文件(使用通配符或文件 1 + 文件 2 + 文件 3 格式)。

本节是 BAT批处理文件与文件夹(附xcopy命令详解) 第二部的内容,请大家继续阅读。

Destination 的默认值
如果省略 Destination,xcopy 命令将文件复制到当前目录。

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

Does destination specify a file name
or directory name on the target
(F = file, D = directory)?

如果要将一个或多个文件复制到一个文件,请按 F。如果要将一个或多个文件复制到一个目录,请按 D。

使用 /i 命令行选项可抑制显示该消息,从而导致 xcopy 认定在源是多个文件或一个目录的情况下,目标是一个目录。

使用 xcopy 命令设置 Destination 文件的存档属姓
xcopy 命令创建具有存档属姓设置的文件,无论源文件中是否设定了此属姓。有关文件属姓和 attrib 的详细信息,请参阅“”。

比较 xcopy 和 diskcopy
如果磁盘的子目录中包含文件,要将其复制到具有不同格式的磁盘中,请使用 xcopy 命令,而不要使用 diskcopy。因为 diskcopy 命令是一个磁道接一个磁道地复制磁盘,所以需要源磁盘和目标磁盘的格式必须相同。xcopy 命令没有该要求。通常情况下请使用 xcopy,除非您需要完整的磁盘图像副本。

xcopy 的退出码
要处理 xcopy 返回的退出码,请在批处理程序的 if 命令行上使用 errorlevel 参数。有关使用“if”处理退出码的批处理程序的范例,请参阅“”。下表列出每一个退出码和说明。

退出码 说明
0 文件复制没有错误。
1 没有找到要复制的文件。
2 用户按 CTRL+C 终止了 xcopy。
4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。
5 出现了磁盘写入错误。

范例
要从驱动器 A 将所有文件和子目录(包括所有空的子目录)复制到驱动器 B,请键入:
xcopy a:b:/s /e

要包含上一示例中的任何系统或隐藏文件,请按如下所示添加 /h 命令行选项:
xcopy a:b:/s /e /h

要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件,请键入:
xcopy \rawdata \reports /d:12-29-1993

要更新上例中 \Reports 中存在的所有文件,而不考虑日期,请键入:
xcopy \rawdata \reports /u

如果只想获得前一个命令要复制的文件列表,而不复制文件,请键入:
xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

文件 Xcopy.out 列出了要复制的所有文件。

要将 \Customer 目录和所有子目录复制到网络驱动器 H: 上的目录 \\Public\Address,保留只读属姓,并在 H: 上创建新文件时对您做出提示,请键入:
xcopy \customer h:\public\address /s /e /k /p

要发出上一个命令,确保在 \Address 目录不存在时 xcopy 会创建该目录,同时应抑制显示创建新目录时要显示的消息,请按如下所示添加 /i 命令行选项:
xcopy \customer h:\public\address /s /e /k /p /i

可以创建批处理程序执行 xcopy 操作,并且使用 if 批处理命令在发生错误时处理退出码。

例子,使用可替换的 xcopy 源和目标参数:
@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination

rem drive or directory (%2)

xcopy %1 %2 /s /e

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit

:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit

:abort
echo You pressed CTRL+C to end the copy operation.
goto exit

:exit

要使用该批处理程序将 C:\Prgmcode 目录和其子目录中的所有文件复制到驱动器 B 中,请键入:
copyit c:\prgmcode b:

该命令解释程序将用 C:\Prgmcode 替换 %1 与 B:。对于 %2,然后使用 xcopy 与 /e 和 /s 命令行选项。
如果 xcopy 遇到错误,批处理程序将读取退出码并转到相应 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并退出批处理程序。

(0)

相关推荐

  • 海量文件复制和备份的技巧(xcopy命令实现)

    网站服务器上的文件通常会越来越多,大量文件进行复制和备份的时候,使用Windows自带的复制粘贴功能,速度会非常慢,主要原因和Windows复制时候计算剩余时间有关,这给网站管理员带来了不少困扰.我这里就总结一个简单而快速的进行海量文件复制和备份的方法. 首先,Xcopy是什么? Xcopy是一个Windows自带的复制文件和目录的工具,可以复制子目录,是个非常好用的命令行工具. 常用的带子目录的复制方法是: xcopy "d:\website" "d:\webbak&quo

  • XCOPY只拷贝当天文件的实现代码

    最近由于MESIS数据库自动站资料的事,需要从CMACAST广播目录L1下将本省的区域自动站数据文件拷贝出来用于入库.在实际操作中碰到几个问题,特此做备忘录,以便以后查找. 问题1:MICDB指定的源目录只要有文件就处理,进库程序本省很耗资源,用PC机处理要讲究效率,最好每次只放入最新文件,以减少重复处理的情况. 问题2:CMACAST广播目录L1文件太多,3天有49万多个文件,光打开目录就要读N分钟,国家局信息中心技术人员都是吃粪的.本来用SceondCopy进行拷贝功能很强大,可以实现只拷贝

  • bat+xcopy实现只复制比目标文件更新的文件

    问题一:假如现在c:\a文件夹下的所有文件和d:\a下的文件相同(修改日期及内容) c:\a下的一个文件被别人修改了或者添加了一个文件! 能否写个bat,判断一下c:\a文件夹下的每个文件的最后修改日期是不是在前两天内!如果是,则复制到d:\a下的相应目录(要是原来有,则覆盖),如果不是,则不复制了. 目录复制: 复制代码 代码如下: @echo off echo y|xcopy c:\a /d /e /r /k d:\a\ pause 复制文件 复制代码 代码如下: echo y | xcop

  • 利用xcopy命令实现本地文件复制到远程服务器的方法

    A.net use \\IP地址 密码/user:****** B.xcopy 文件 \\IP地址\ 批处理文件为backup.bat,其代码如下: ========================================================================================= net use \\192.168.1.198\ipc$ Zqf198703 /user:royalpeak xcopy g:\backup\*.* \\192.168.

  • XCOPY的高级使用:指定日期并且用EXCLUDE排除指定文件

    1.cmd到xcopyTime.bat所在目录,执行命令xcopyTime sourceFolder DestinationFolder dateTime 2.EXCLUDE.txt是排除的对象,不复制其中罗列的文件或文件夹 例子: F:\bat>xcopyTime E:\workspace F:\website\ 06-30-2010 EXCLUDE.txt内容,在下面的线里面 ------------------------------ .classpath .class .log ----

  • Xcopy 复制文件和目录,包括子目录。

    Xcopy 复制文件和目录,包括子目录. 语法 xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 参数 Source  必需的.指定要复制的文件的

  • xcopy 实现批处理拷贝文件或文件夹

    xcopy 是一个很有用的doc命令,应该学习学习! 可以用xcopy实现,例如: C:\>xcopy C:\ppt\*.* D:\ppt\ /s /e 这条命令的意思就是把C盘下的PPT文件夹全部拷贝到D盘 XCOPY 还有众多的功能, 是加参数来完成的.上面的/s /e 参数的作用分别是把子目录和空目录都复制过去, 一些使用举例和参数说明如下: 1.如只是单纯地复制 E:\ 盘上所有文件到 D:\ 盘上,就输入" xcopy e:\*.* d: /s /h "就行啦!如果在复

  • BAT批处理之文件与文件夹操作代码(附xcopy命令详解)

    批处理中的文件.文件夹操作,xcopy命令的用法. 一,建bat文件自动执行复制,删除命令. 例1:复制cd.dll文件至windows\system32的bat文件内容: 复制代码 代码如下: copy cd.dll %windir%\system32 例2:卸载windows\system32目录中的cd.dll,即把上面复制的文件删除: 复制代码 代码如下: del %windir%\system32\cd.dll 例3:删除download文件夹中的文件,例子如下: 复制代码 代码如下:

  • 一天一个shell命令 linux文本操作系列-head,tail命令详解

    head命令中文介绍: 用法:head [选项]... [文件]... 将每个指定文件的头10 行显示到标准输出. 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头. 如果不指定文件,或者文件为"-",则从标准输入读取数据. 长选项必须使用的参数对于短选项时也是必需使用的. -c, --bytes=[-]K 显示每个文件的前K 字节内容: 如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容 -n, --lines=[-]K 显示每个文

  • 一天一个shell命令 linux文本操作系列-tac,rev命令详解

    说明: tac和rev没有必然联系,唯一相同的是,他们是"反派".tac其实是cat的反写,cat正常输出,那tac就倒着输出,不过从行的最后一行输出,那rev呢?rev是每行的最后一个字母到第一个字母倒序输出. 简单实例 tac命令 文件过滤分割与合并 tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示. 语法 tac(选项)(参数) 选项 -a或--append:将内容追加到文件的末尾: -i或--ignore-interrupts:忽略中断信号. 参数 文

  • java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 写入文件的目录.代码通过找目录下的文件,进行相关函数的操作.如果目录下面包含子目录.代码设有调用递归的方法,在寻找子目录下的文件 在进行相关的函数操作.函数主要是按用户输入的个数要求输出文件中出现次数最多的前几位字母. package com.keshangone; //将想要输出的数据写入新的文件里面 import java.util

  • Linux中du-查看文件夹大小并按大小进行排序详解

    Linux中du-查看文件夹大小并按大小进行排序详解 某天,我想检查一下电脑硬盘的的使用情况,作为一个命令控,废话少说,开始吧: 使用df 命令查看当前磁盘使用情况: jack@jiaobuchong:~$ df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 5.7G 11G 35% / udev 2.7G 4.0K 2.7G 1% /dev tmpfs 553M 916K 552M 1% /run none 5.0M

  • java使用GeoTools读取shp文件并画图的操作代码

    GeoTools是ArcGis地图与java对象的桥梁,恰如jdbc之于oracle与java. shp文件本身是存有地理对象边界坐标.对象中心城市及城市编号的多多边形字符串. 需要使用的依赖如下 <!-- 添加GeoTools依赖 --> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> <version>

  • Linux 中的文件复制cp命令和scp命令详解

    Linux 中的文件复制cp命令和scp命令详解 在使用操作系统的使用过程中,常常需要复制文件到本地或者传输文件到其他电脑上,这时候用到两个命令cp和scp. cp命令用来复制文件或者目录.scp是secure copy的简写,用来在Linux下进行加密的远程传输文件或者目录. cp和scp是Linux中功能强大且常用的的命令,下面就介绍下cp和scp两个命令的使用. cp命令 cp命令可以复制一个文件,可以是单个文件复制也可以是整个目录复制,命令的使用方式: cp [options] sour

  • npm script 的文件监听和自动刷新的命令详解

    文件监听的作用是为了实现自动化,释放双手和精力,提高效率,让开发者更加关注于开发.npm script 文件监听和 grunt.gulp 功能类似. 自动刷新,意思就是改动文件保存后,页面自动刷新,减少日常开发的操作. 代码检查的监听和自动化 代码检查工具 stylelint.eslint.jsonlint 这些对 watch 支持很弱,所以就需要引入工具包 onchange 安装命令依赖包 npm i onchange -D // 或 yarn add onchange -D 编写命令 "sc

  • Linux环境下查看日志文件命令详解

    目录 前言 一.cat命令: 二.more命令: 三.less命令: 四.head命令: 五.tail命令: 六.tac命令: 七.echo命令: 八.grep命令: 九.sed命令: 混合命令: 附加: 前言 当日志存储文件很大时,我们就不能用 vi 直接去查看日志了,就需要Linux的一些内置命令去查看日志文件. 系统Log日志位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志

  • php文件包含目录配置open_basedir的使用与性能详解

    1.open_basedir介绍 open_basedir 将php所能打开的文件限制在指定的目录树中,包括文件本身.当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查.当文件在指定的目录树之外,程序将拒绝打开. 本指令不受安全模式打开或关闭的影响. 2.open_basedir设置方法 1.在php.ini 加入 open_basedir="指定目录" 2.在程序中使用 ini_set('open_basedir', '指定

随机推荐