bat批处理学习(四)

  • 格式:pdf
  • 大小:2.91 MB
  • 文档页数:29

.BAT批处理文件学习(四)2015.08明仔@群:沈阳理工电子爱好者31 attrib命令 (2)32 xcopy命令 (5)33 pushd 和popd命令 (16)34 tree命令 (17)35 subst (外部命令) (18)36 assoc 和ftype (19)37 for命令 (21)31 attrib命令显示或更改文件属性。

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I][drive:][path][filename] [/S [/D] [/L]]+ 设置属性。

- 清除属性。

R 只读文件属性。

A 存档文件属性。

S 系统文件属性。

H 隐藏文件属性。

I 无内容索引文件属性。

[drive:][path][filename]指定 attrib 要处理的文件。

/S 处理当前文件夹及其所有子文件夹中的匹配文件。

/D 也处理文件夹。

/L 处理符号链接和符号链接目标的属性。

在Windows中,用户可看到和可操作的有文件的只读属性(R)和隐藏属性(H),在Windows中,只要右击文件名,选“属性”,即可打开属性对话框,在属性对话框中可以对文件进行属性设置。

事实上文件的属性除了上述两种属性外还有系统属性(S)和归档属性(A)及无内容索引文件属性(I),只是后面的属性在视窗系统中用户看不到也不可操作,但可以在命令行状态下,用attrib命令对文件的所有属性进行查看和操作。

只读属性(R):对于具有只读属性的文件,可以查看它的名字,它能被应用,也能被复制,但不能被修改和删除。

如果将可执行文件设置为只读文件,不会影响它的正常执行,但可以避免意外的删除和修改。

隐藏属性(H):在查看磁盘文件的名称时,系统一般不会显示具有隐藏属性的文件名。

一般情况下,具有隐藏属性的文件不能被删除、复制和更名。

系统属性(S):文件的系统属性是指系统文件,它将被隐藏起来。

在一般情况下,系统文件不能被查看,也不能被删除,是操作系统对重要文件的一种保护属性,防止这些文件被意外损坏归档属性(A):一个文件被创建之后,系统会自动将其设置成归档属性,这个属性常用于文件的备份一显示当前路径下文件的属性命令编辑:执行结果:二显示当前路径下某一个文件的属性命令编辑:执行结果:三给1.txt添加隐藏属性命令编辑:执行结果:四给1.txt去除隐藏属性命令编辑:执行结果:32 xcopy命令文件拷贝xcopy [source] [distination] [/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][/EXCLUDE:file1[+file2][+file3]…][/A] :只复制已设定保存属性的档案,不改变属性[/M] :只复制已设定保存属性的档案,并关闭保存属性不好意思,我没有搞明白保存属性,所以这个略过.[/D:date]复制在制定日期及之后发生变更的档案date格式:M-D-Y 我的E盘文件目录E盘000文件夹的文件目录:命令编辑:执行结果:执行后E盘的文件目录:[/P] :在建立每个目的地档案时显示提示命令编辑:执行环境和上面的一样….执行结果:没复制一个文件都会提示,得让我们手动输入Y或者N . [/S] :复制每个目录及子目录,但空目录除外。

[/E] :复制每个目录及子目录,包含空目录。

首先我们先看看我E盘000文件夹的目录:000中有个空文件夹0E盘文件:和000文件夹同级我们建立了一个111空文件夹。

命令编辑:执行结果:执行后111文件夹的内容:111文件夹中没有空文件夹0下面我们将111文件夹清空,该用/E命令:命令编辑:执行过后我们发现111文件夹下有0文件夹,且为空。

[/V]检查每个新档案的大小命令编辑:执行结果:[/W] 在复制之前提示你按键命令编辑:执行结果:[/C] 即使发生错误,仍继续复制命令编辑:执行结果:[/I]如果目的地不存在且复制一个以上的档案,及假设该目的地必然是目录命令编辑:(在执行前先删除E盘中的111文件夹)执行结果:执行完我们会看到在没有目的文件夹111的情况下,系统会生成一个111文件[/Q]复制时不显示档名命令编辑:执行结果:[/F]复制时显示来源及目的地档案的完整名称命令编辑:执行结果:[/L]显示要复制的档案(这个我也没有搞明白是何效果)[/G]允许将加密档复制到不加密的目的地[/H]同时复制隐藏档和系统档案[/R]复写只读档案我们先用简单的Xcopy来将000文件夹中的文件复制到111文件夹中,前提先说明:此时111文件夹中有一个1.txt只读文档,内容为1234567890,000文件夹中也有一个1.txt档,内容为abcdefg命令编辑:执行结果:执行后我们会发现111文件夹中的1.txt档并没有被改写加入/R 命令后:命令编辑:执行结果:执行后我们会发现111文件夹中的1.txt档内容变为:abcdefg[/T]建立目录结构并不复制其中的档案,不包括空目录或者子目录我E盘000文件夹的目录机构:其中123和adf不是空的,目的地111文件夹为空:命令编辑:执行结果:结果只是显示这个,但是已经在111文件夹中建立了123和adf的空文件夹.[/U]只复制已存在于目的地的档案前提:000文件夹中有1.txt,其内容为:abcdefg111文件夹中也有一个1.txt.其内容为:1234567890命令编辑:执行结果:执行后111文件夹中依旧只有1.txt,但是内容变成了abcdefg[/K]复制属性,一般Xcopy将会重设唯独属性首先确定我们000文件夹中的1.txt文档是只读和隐藏的,再用下面的命令将1.txt 复制到111文件夹中,我们会发现1.txt的只读属性被取消了.我们再用/K命令来执行一次:复制后发现111文件夹中的1.txt档属性没有改变.由于这里的1.txt具有隐藏属性,所以必须加/h.[/N]使用产生的简短档名进行复制我000文件夹中有一个11254615489474654131565421321654465.txt文档,是不是它的名字很长啊,/n的作用就是复制后111文件夹中的文件名将变成简短的.命令编辑:执行结果:我们发现执行后111中复制过来的文件名为: 112546~1.TXT [/O]复制档案的而所有权限及ACL资讯[/X]复制档案稽核设定(隐含/O)[/Y]不要提示是否覆盖目的地已存在的文档[/-Y]需要提示…..[/Z]在可重新启动的模式中复制网路档案[/B]复制符号链接本身而非链接目的地33 pushd 和popd命令功能介绍:Pushd: 保存当前目录,并切换当前目录为后面跟随的目录Popd: 恢复当前目录为刚才保存的目录命令编辑:执行结果:34 tree命令功能介绍:显示目录结构tree e:\000 #显示E盘000的文件目录结构我E盘000文件夹得截图命令编辑:执行结果:35 subst (外部命令)映射磁盘一、subst [盘符] [路径] 将指定的路径替代盘符,该路径将作为驱动器使用二、subst /b 解除替代三、subst #显示目前所有的映时例子:subst z: \server\MP4 #这样输入z:就可以访问\server\MP4了subst z: /d #取消该映射命令编辑:执行结果:刚开始我们就利用subst命令查看当前的所有映射(没有映射,所以无显示) 执行到pause命令下来我们subst v: e:\mp4 产生一个映射,再次调用subst会发现存在映射V:\: => E:\MP4下来我们调用subst v: /d 取消映射,再次调用subst 便会发现没有映射了36 assoc 和ftype文件关联assoc 设置'文件扩展名'关联,关联到'文件类型'ftype 设置'文件类型'关联,关联到'执行程序和参数'当你双击一个.txt文件时,windows并不是根据.txt直接判断用notepad.exe 打开而是先判断.txt属于txtfile '文件类型'再调用txtfile 关联的命令行txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1 可以在\"文件夹选项\"→\"文件类型\"里修改这2种关联1:assoc #显示所有'文件扩展名'关联命令编辑:命令执行:(好多页…….)assoc .txt #显示.txt代表的'文件类型',结果显示.txt=txtfileassoc .doc #显示.doc代表的'文件类型',结果显示.doc=Word.Document.8assoc .exe #显示.exe代表的'文件类型',结果显示.exe=exefile上面的命令形式只是assoc命令的具体化!!2:ftype #显示所有'文件类型'关联命令编辑:命令执行:由结果我们可以找到.txt扩展文件的关联文件类型txtfile所关联的执行程序为图中红色框中的。

我们也可以调用下面形式的命令:ftype [filetype[=[opencommandstring]]]来重新关联文件类型的执行程序和参数。

37 for命令for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。

for语句有多个开关,不同开关将会实现不同的功能。

1、无开关无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。

其命令格式为:FOR %%variable IN (set) DO command其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%);set就是需要我们设定的循环范围,类似于C语言里面的循环变量;do后面的command就是循环所执行的命令,即循环体。

例1:逐个显示循环范围内的数据命令编辑:执行结果:例2: 显示当前目录下与*.mp4相匹配的文件(只显示文件名,不显示路径)命令编辑:执行结果有结果可知上面的命令把当前目录下所有的.mp4文件名称显示出来了。

例2: 显示指定目录下与之相匹配的文件(只显示文件名,不显示路径)命令编辑:执行结果:2、开关/L/L迭代数值范围描述:使用迭代变量设置起始值(Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值(End#)。