批处理之家's Archiver

Hello123World 发表于 2011-8-24 22:48

【续】[一日一教学](14)文件替换:replace

[i=s] 本帖最后由 Hello123World 于 2011-8-25 16:23 编辑 [/i]

【原】[一日一教学]批处理系列帖子索引 [url]http://bbs.bathome.net/thread-2576-1-1.html[/url]
【续】[一日一教学]批处理系列帖子索引 [url]http://bbs.bathome.net/thread-13798-1-1.html[/url]

帮助信息:[code]替换文件。

REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W] [/U]

  [drive1:][path1]filename 指定源文件。
  [drive2:][path2]         指定要替换文件的目录。
  /A                       把新文件加入目标目录。不能和/S 或 /U 命令行开关搭配使
用。
  /P                       替换文件或加入源文件之前会先提示您进行确认。
  /R                       替换只读文件以及未受保护的文件。
  /S                       替换目标目录中所有子目录的文件。不能与 /A 命令开关搭
配使用。
  /W                       等您插入磁盘以后再运行。
  /U                       只会替换或更新比源文件日期早的文件。不能与 /A 命令行
开关搭配使用。[/code]命令概括:
replace,全英文replace,意为:替换;下辖6个参数。[code]REPLACE [drive1:][path1]filename [drive2:][path2][/code]replace的使用条件:
::参照语法,使用光杆replace条件有两个
1.替换和被替换的文件要同名(根据:目标只有文件路径,没有文件名)
2.两文件必须在不同的路径(根据:同名文件不能在同一个文件夹)
经测试确实如此。

参数详解:[code]/A                       把新文件加入目标目录。不能和/S 或 /U 命令行开关搭配使用。[/code]/a,英文全称add,意为:添加。
/a参数不能和/s、/u在一起使用。
/a参数与其说是“把新文件加入目标目录”,不如说是“复制新文件到目标目录”,所以raplace /a 可以当 copy /y 用,不过语法上要注意一下差别。
例子:将1.txt复制到c盘根目录:[code]C:\Users\HELLOW~1\Desktop>replace /a 1.txt c:\[/code][code] /P                       替换文件或加入源文件之前会先提示您进行确认。[/code]/p,英文全称prompt,意为:提示。
顾名思义,就是提示,效果:[code]C:\Users\HELLOW~1\Desktop>replace /p 1.txt c:\
是否替换 C:\1.txt? (Y/N)[/code][code]/R                       替换只读文件以及未受保护的文件。[/code]/r,英文全称read,意为:阅读;在此可引申为只读文件。
竟然有这个参数,可以预见,replace默认是不能替换只读文件的,经测试确实如此。[code]C:\Users\HELLOW~1\Desktop>attrib +r c:\1.txt

C:\Users\HELLOW~1\Desktop>replace  1.txt c:\
拒绝访问 - C:\1.txt
未替换文件

C:\Users\HELLOW~1\Desktop>replace /r 1.txt c:\
正在替换 C:\1.txt[/code][code]  /S                       替换目标目录中所有子目录的文件。不能与 /A 命令开关搭
配使用。[/code]/s,英文全称subdirectory,意为:子目录。
/s可以替换指定目录下所有子目录的文件,
例如:有两个txt文件,他们的完全路径分别是 c:\1.txt c:\hello\1.txt,用/s参数一次把他们全部替换。[code]C:\Users\HELLOW~1\Desktop>replace /s /r 1.txt c:\
正在替换 C:\1.txt
正在替换 C:\hello\1.txt[/code][code] /W                       等您插入磁盘以后再运行。
[/code]/w,英文全称wait,意为:等待。
这命令就不解释了,磁盘应该指的是软盘;由此命令不难看出“吻到死”对cmd.exe只有一种“萧规曹随”的“敝帚自珍”之情,没有“与时俱进”的“I love you,I need you,I want you”的强烈爱情,是的,windows不爱cmd,他只是珍惜她而已……[code]  /U                       只会替换或更新比源文件日期早的文件。不能与 /A 命令行
开关搭配使用。[/code]/u,英文全称update,意为:更新。
这个参数很神奇,replace中数这个参数最得我心。
例如:先创建两个文本,c盘的先创建,d盘的后创建[code]C:\Users\HELLOW~1\Desktop>echo I'm first!>c:\1.txt

C:\Users\HELLOW~1\Desktop>echo I'm Second!>d:\1.txt[/code]然后加/u参数替换c:\1.txt到d盘[code]C:\Users\HELLOW~1\Desktop>d:\1.txt

C:\Users\HELLOW~1\Desktop>replace /u c:\1.txt d:\

C:\Users\HELLOW~1\Desktop>type d:\1.txt
I'm Second![/code]可以看出d盘的1.txt并没有被替换,这是为什么?因为d:\1.txt后于c:\1.txt的创建,换句话说:d:\1.txt比c:\1.txt新。

竟然如此,那么反过来自然就成立了:[code]C:\Users\HELLOW~1\Desktop>replace /u d:\1.txt c:\
正在替换 C:\1.txt

C:\Users\HELLOW~1\Desktop>type c:\1.txt
I'm Second![/code]

yangfresh 发表于 2019-6-14 09:55

怎么没人了

秀才 发表于 2019-9-14 10:41

这个替换命令,我怎么试不出来呢?一直提示目录找不到
我是 WIN10

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.