Dos命令完成文件拷贝
Dos命令初阶--文件拷贝
1、XCOPY命令
可以在cmd中录入:XCOPY /? 即可查看帮助
帮助:
XCOPY Microsoft Windows [版本 6.2.9200]
(c) 2012 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>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] [/B] [/J]
[/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 取消提示以确认要覆盖
现有目标文件。
/-Y 要提示以确认要覆盖
现有目标文件。
/Z 在可重新启动模式下复制网络文件。
/B 复制符号链接本身与链接目标。
/J 复制时不使用缓冲的 I/O。推荐复制大文件时使用。 开关 /Y 可以预先在 COPYCMD 环境变量中设置。
这可能被命令行上的 /-Y 覆盖。 C:\Users\Administrator>
认真读懂这些参数,即可写Copy命令了。
简单的:
xcopy source target
下面介绍几种常见用法:
1)拷贝文件
将C盘的info.txt文件拷贝到D盘根目录。
xcopy C:\info.txt D:\
将命令保存到bat文件,然后在C盘创建info.txt,执行bat文件,即可在D盘看到。
2)指定参数,强制覆盖
如果重复执行,因为文件已经存在,则会给出提示
我们加入强制执行参数:
xcopy C:\info.txt D:\ /Y
我们从上文的帮助中砍下其命令说明:
/Y 取消提示以确认要覆盖
现有目标文件。
/-Y 要提示以确认要覆盖
现有目标文件。
然后,就可以重复执行,每次都会覆盖。
3)拷贝文件,只拷贝更新文件
每次都强制copy,如果源文件比目标目录的文件,日期新,才copy怎么办呢?
增加配置参数:D
xcopy C:\info.txt D:\ /Y/D
对应才参数说明:
/D:m-d-y 复制在指定日期或指定日期以后更改的文件。
如果没有提供日期,只复制那些
源时间比目标时间新的文件。
4)拷贝目录
其实与拷贝文件类似。
xcopy C:\test D:\test /D/Y
如果D:\test文件夹不存在,则会自动创建。
在C盘的test文件中创建文件和文件夹,即可进行Copy。
第一次执行会出现提示:是文件还是目录。
如何指定其为目录,无需客户判定呢?
解决办法:默认是目录:/I
xcopy C:\test D:\test2 /I/D/Y
其使用说明:
/I 如果目标不存在,且要复制多个文件,
则假定目标必须是目录。
5)拷贝目录中包含子目录
根据上面的脚本,只能复制当前目录下的文件及目录
我们可以使用/S 或者/E
xcopy C:\test D:\test2 /E/I/D/Y
这样,其C:\test下的所有文件,包括子目录与空目录,以及子目录的子目录文件,也都成功拷贝到了目标目录。
/S与/E具体解释:
/S 复制目录和子目录,不包括空目录。
/E 复制目录和子目录,包括空目录。
与 /S /E 相同。可以用来修改 /T。
6)如果Copy只读文件
当文件Copy到目标目录,如果其是或者设置为只读文件,则无法覆盖。
这时我们用到了参数/R
xcopy C:\test D:\test /E/R/I/D/Y
具体解释:
/R 覆盖只读文件。
其他的命令参数,我们这里不再介绍,根据自己的需要,认真研究帮助文档。
2、echo命令,增加描述
通过XCOPY命令,可以很轻松的实现copy功能。为了让界面更友好,我们希望将执行的情况展现给用户。
这时候就需要echo命令。
在cmd中输入:echo /?查看帮助
C:\Users\Administrator>echo /?
显示信息,或启用或关闭命令回显。 ECHO [ON | OFF]
ECHO [message] 要显示当前回显设置,键入不带参数的 ECHO。
几种常见功能介绍:
1)输出提示信息
格式:ECHO信息内容
echo HelloWorld
执行结果:
2)作为控制批处理命令在执行时是否显示命令行自身的开关
格式:ECHO [ON|OFF]
如果想关闭“ECHO OFF”命令行自身的显示,则需要在该命令行前加上“@”。
在上图中,我们可以看到前面总是有路径信息,很烦,能否只展现dos命令执行信息呢?这就要用到ECHO OFF
@echo OFF
echo HelloWorld
pause
执行结果:
看到了,cmd窗口只剩下dos命令了。简洁漂亮。
3)echo还有其他功能,如改变背景色、输出文件等。这里不再介绍。
3、SET命令,设置变量
用户录入还需要给出具体的提示。
但是,我们希望将文件拷贝到用户指定的目录中去。
需要提供一个交互页面,指导用户进行操作。
这就需要dos的set命令。用来设置变量。
SET [variable=[string]]
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。 要显示当前环境变量,键入不带参数的 SET。 SET 命令不允许变量名含有等号。
但获取变量时,用%variable%获取
在cmd中可以输入:SET /? 查看详细帮助。
1)设置变量
例子:
@echo OFF
set name=Tom
echo %name%
2)给出输入提示,则需要/p参数
SET /P variable=[promptString]
看一个helloworld的例子
echo
set /p name=请输入您的名字
echo Hello %name%,welcome to dos world.
pause
3)用set命令进行简单计算
语法:
SET /A expression
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作。
例子:1+1=2
@echo OFF
set /p expresion=请输入数学表达式
set /a result = %expresion%
echo %result%
pause
关于set可以进行计算的功能,还有很多详细的内容,这里不再多说,可以查询相关的资料。
4)set用于字符串处理
1)字符串替换
语法:
%var:str1=str2%
含义:将字符串变量%var%中的str1替换为str2
例子:
@echo OFF
set var=坚持就是胜利
echo 替换前的值为:"%var%"
set var=%var:是=能%
echo 替换后的值为:%var%
pause
执行结果:
2)字符串截取
语法:
%var:~[m[,n]]%
方括号表示可选,%为变量标识符,var为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0),n为截取长度(缺省为全部) %PATH:~10,5%
例子:
@echo OFF
set var=坚持就是胜利
echo 截取前:%var%%
set var="%var:~0,2%"
echo 截取后:%var%
pause
结果:
截取长度可以为负数:
语法:
%var:~0,-2%
含义:把字符串倒数第三位开始的所有值付给变量。
负数,代表逆向。
@echo OFF
set var=坚持就是胜利
echo 截取前:%var%%
set var="%var:~0,-2%"
echo 截取后:%var%
pause
结果:
其实位置可以省略
语法:
%var:~-2%
含义:从变量var字符串,从末尾开始,截取2个字符。
@echo OFF
set var=坚持就是胜利
echo 截取前:%var%%
set var="%var:~-2%"
echo 截取后:%var%
pause
结果:
4、IF命令,判断
设置了路径,我们需要判断是否存在,通过IF语句
在cmd中输入:IF /? 查看if语句的使用帮助。
执行批处理程序中的条件处理。 IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command NOT 指定只有条件为 false 的情况下,Windows 才
应该执行该命令。 ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
指定数字的退出代码,指定条件为 true。 string1==string2 如果指定的文字字符串匹配,指定条件为 true。 EXIST filename 如果指定的文件名存在,指定条件为 true。 command 如果符合条件,指定要执行的命令。如果指定的
条件为 FALSE,命令后可跟 ELSE 命令,该命令将
在 ELSE 关键字之后执行该命令。 ELSE 子句必须出现在同一行上的 IF 之后。例如: IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
) 由于 del 命令需要用新的一行终止,因此以下子句不会有效: IF EXIST filename. del filename. ELSE echo filename. missing 由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也
不会有效: IF EXIST filename. del filename.
ELSE echo filename. missing 如果都放在同一行上,以下子句有效: IF EXIST filename. (del filename.) ELSE echo filename. missing 如果命令扩展被启用,IF 会如下改变: IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command 其中, compare-op 可以是: EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于 而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
/I 开关可以用于 IF 的 string1==string2 的形式上。这些
比较都是通用的;原因是,如果 string1 和 string2 都是
由数字组成的,字符串会被转换成数字,进行数字比较。 CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它
是在跟与命令扩展有关联的内部版本号比较。第一个版本
是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。
命令扩展被停用时,CMDEXTVERSION 条件不是真的。 如果已定义环境变量,DEFINED 条件的作用跟 EXIST 的一样,
除了它取得一个环境变量,返回的结果是 true。 如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%
会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,你会得到
其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法: goto answer%ERRORLEVEL%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1 你也可以使用以上的数字比较: IF %ERRORLEVEL% LEQ 1 goto okay 如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%
将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始
命令行;否则,你会得到其数值。 如果没有名为 CMDEXTVERSION 的环境变量,
%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的
字串符表达式;否则,你会得到其数值。
IF帮助
这里举两个简单例子
1)判断字符串
@echo OFF
SET /P var=是否继续执行,请输入Y或N
ECHO 输入的值为:"%var%"
IF "%var%"=="Y" (
echo 继续执行...
)ELSE (
echo 退出中...
) pause
2)判断文件是否存在
@echo OFF
set /P var=请输入文件名,包括文件路径,如:C:\Info.txt
echo 输入的值为:"%var%"
if exist %var%. (echo 文件存在. ) else echo 文件不存在.
pause
备注:if与else在同一行中
如果是分行处理,一定要保证括号附近有空格,否则会报语法错误,如下:
@echo OFF
set /P var=请输入文件名,包括文件路径,如:C:\Info.txt
echo 输入的值为:"%var%"
if exist %var% (
echo 文件存在
) else (
echo 文件不存在
)
pause
执行结果:
5、goto语句,用于语句跳转
如果对不同的情况,需要执行不同的既定操作,若还是按照常规的执行流程的话,是无法完成任务的,这个时候,就需要引入流程跳转的概念,动用流程跳转语句 goto 了。流程跳转的含义是:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。
先来看个例子:假设需要判断用户输入的是A还是B,代码可以写成这样:
@echo off
set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
exit :A
echo 您输入的字母是A
pause
exit :B
echo 您输入的字母是B
pause
exit
6、pause命令,暂停批处理程序
暂停批处理程序,并显示以下消息:
请按任意键继续. . .
7、rem命令,注释
为了bat脚本更好看,需添加注释,就需要rem命令
语法:
REM [COMMENT]
在文件开头写说明性文字如:
REM 拷贝文件
REM CREATEBY YANK
REM 2014-08-25
如果注释多行,可以采取goto语句
goto Main
拷贝文件
CREATEBY YANK
2014-08-25
:Main
最后的拷贝脚本如下:
goto MAIN
拷贝文件
CREATEBY YANK
2014-08-25
:MAIN @echo off
echo "Copy start" echo 请输入需要拷贝的目标路径
echo 请输入target的路径,如:D:\target
:SETTARGET
set /p target=请输入target的路径:
if "%target%"=="" (
echo 未输入target的路径
echo 补丁文件安装失败
echo 退出...
pause
goto QUIT
)
if not exist "%target%" (
echo 输入的target地址不存在,请检查后重新输入
goto SETTARGET
) else (
xcopy C:\test %target% /E/R/I/D/Y
) :QUIT
其他
1、bat执行,汉字出现乱码
找了很多,最终,将bat文件用记事本打开,另存为ANSI格式即可。之前是UTF-8。
Dos命令完成文件拷贝的更多相关文章
- DOS命令生成文件列表
DOS命令窗口,生成文件列表命令格式:dir xmlFiles /b >list.txt dir 文件列表相关命令 xmlFiles 待生成文件所在文件夹,在dos命令窗口根目录下,省略前缀.别 ...
- 用DOS命令获取文件列表
其实就是两个命令:dir 跟 tree 在C:盘根目录下生成了一个名为“filelist.txt”的文本文件,该文件中即包含D:盘的文件夹列表. dir d:\ >c:\filelist.txt ...
- Dos命令打印文件以及Dos打印到USB打印端口
MS-DOS命令范例 要将当前目录中的 Report.txt 发送到连上本地计算机的 LPT2,请键入: print /d:LPT2 report.txt 要将 c:\Accounting 目录中的 ...
- dos命令:文件操作
文件操作 一.assoc命令 1.介绍 显示或修改文件扩展名关联 2.语法 ASSOC [.ext[=[fileType]]] .ext 指定跟文件类型关联的文件扩展名 fileType 指定 ...
- 计算机应用第三次作业:自动开机自动关机 常用DOS命令 关于文件文件夹
一.自动开机 台式机启动时按住DEL键 进入一个蓝色的界面,界面上是英文提示 这个界面是BIOS ,是在机器的ROM中存储 二.自动关机 自动重启 方法一在120秒钟后自动关机 win+r (RUN ...
- matlab 调用dos命令和文件操作
第一.利用!直接调用,简单方便,可以带操作对象:!del A.bat 第二.调用system函数或者dos函数,既可以实现功能,又返回参数,能检查执行情况,方便后面程序的开发,推荐这个 [status ...
- 给dos命令“.bat”文件换图标
最近客户有个需求:给企业建立一个FTP服务器,并且给不同的部门分配不同的目录和管理权限. 这个好实现!直接安装serv-u,进行一番设置,搞定! 不过客户嫌登陆FTP操作麻烦,输入ip,输入账号什么的 ...
- 批处理bat文件dos命令实现文件的解压缩
::========压缩文件======================= ::将源路径“C:\Users\xcc\Desktop\多大的经济 ”路径下的文件压缩到目标路径下“D:\迅雷下载\压缩.r ...
- 批处理bat文件dos命令复制文件
::将“C:\Users\ZZ\Desktop\快捷处理\我我我哦我”路径下的文件复制到“C:\Temp\我我我哦我”路径下::/S表示“复制目录和子目录,除了空的.”::/E表示“复制目录和子目录, ...
随机推荐
- [转]浏览器渲染机制——一定要放在body底部的js引用
转自:http://blog.csdn.net/u012251421/article/details/50536265 说明: 本文提到的浏览器均是指Chrome. “script标签“指的都是普通的 ...
- linux hugepage
The intent of this file is to give a brief summary of hugetlbpage support inthe Linux kernel. This ...
- 51nod 1445 变色DNA(dij)
题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是'Y',说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面'Y'的数量. 最后,求 0到n ...
- 转-浅谈HTTP-GET 、 HTTP-POST 和SOAP
HTTP-GET 和 HTTP-POST HTTP-GET和HTTP-POST是标准协议,他们使用HTTP(超文本传输协议)谓词(谓词是指条件表达式的求值返回真或假的过程.)对参数金星编码并将参数作为 ...
- jfinal 基本应用 --事务回滚
事务回滚 1.当时需要用到事务回滚,但是看到网上只有问题,没有真实的到底怎么用法. 2.我看了一下文档,结合了网上的大神的博客. 第一种方法: Db.tx(new IAtom(){ @Override ...
- Octopus系列之各个页面调用示例
调用首页产品 可选参数如下 New = 1, Hot = 2, Best = 3, Special = 4, Featured = 5, Other = 6 #foreach($item in $oc ...
- Web开发学习笔记
EnumUtils.isValidEnum(JnRouteProViewStateEnum.class, status) : 判断 status是否在 枚举集合中. MapUtils.isNotEmp ...
- Leetcode 171 Excel Sheet Column Number 难度:0
https://leetcode.com/problems/excel-sheet-column-number/ class Solution { public: int titleToNumber( ...
- stopPropagation, preventDefault 和 return false
e.stopPropagation()此方法用于阻止事件冒泡或者事件捕获.IE8及以下中没有此方法,使用e.cancelBubble=false 来阻止事件冒泡. 当标准W3C中,事件包括捕获阶段和冒 ...
- 为什么使用 Bootstrap?
为什么使用 Bootstrap? 移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式. 浏览器支持:所有的主流浏览器都支持 Bootstrap. 容易上 ...