Board logo

标题: 如何用指定文件替换某个位置不确定的文件 [打印本页]

作者: dirzxl     时间: 2006-8-30 08:28    标题: 如何用指定文件替换某个位置不确定的文件

有点像模糊查询一样,就是我不知道那个文件的具体位置;
但是我知道他的文件名.
我就想编个批处理将一个已知路径的文件去替换那个不知道路径的文件
不知如何做

[ Last edited by namejm on 2007-2-3 at 10:35 PM ]
作者: NaturalJ0     时间: 2006-8-30 08:42
dir 文件名 /s /a
作者: dirzxl     时间: 2006-8-30 09:59


  Quote:
Originally posted by NaturalJ0 at 2006-8-30 08:42:
dir 文件名 /s /a

你这个是显示呀
有什么用
作者: NaturalJ0     时间: 2006-8-30 10:17
replace filename.txt c:\ /s /r

[ Last edited by NaturalJ0 on 2006-8-30 at 10:25 ]
作者: dirzxl     时间: 2006-8-30 11:01
4楼的
能详细点吗
有点不懂呀
不过看得出你已理我的意思
作者: NaturalJ0     时间: 2006-8-30 12:37
replace 你提供的源文件 要换文件的盘符 /s /r

比如想用D盘根目录的 abc.dll 换掉 C 盘内所有的 abc.dll

replace d:\abc.dll c:\ /s /r
作者: dirzxl     时间: 2006-8-30 15:37
我不是说了
路径不知道呀
真是的
作者: dirzxl     时间: 2006-8-30 15:38
有不有一个说得过去的回答呀
作者: namejm     时间: 2006-8-30 17:02
  如果是用一个文件去替换其他目录下不同名的文件,可以用如下代码:
@echo off
setlocal enabledelayedexpansion
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist %%i:\nul (
    for /f "tokens=3" %%z in ('dir /-c %%i:\') do set freesize=%%z
    if not "!freesize!"=="0" (
      cd\
      cd /d %%i:
      for /r %%k in (.) do (
        if exist "%%k\被替换的文件" del /q "%%k\被替换的文件" && copy "指定文件" "%%k"
      )
    )
  )
)
  如果是严格意义上的替换,即用一个文件覆盖不同目录下的所有同名文件,用replace命令即可:
@echo off
setlocal enabledelayedexpansion
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist %%i:\nul (
    for /f "tokens=3" %%z in ('dir /-c %%i:\') do set freesize=%%z
    if not "!freesize!"=="0" (
      replace /s "指定目录下的文件" %%i:
    )
  )
)

作者: dirzxl     时间: 2006-9-1 09:23
NAMEJM好像说得有点道理
作者: holyman     时间: 2006-10-25 00:41
用好批处理,并非做什么都用批处理,有些时候直接编写一下c++小工具来的更为方便和灵活,关键是看怎样效率更高。
作者: electronixtar     时间: 2006-10-25 04:42
批处理效率绝对比 C++ 高。因为等你把 C++  输入和编译出来,我的那行批处理都早就敲回车了
作者: lxmxn     时间: 2006-10-25 06:51

  呵呵,同意~
 
    有的问题用批处理很好解决,当然就要用批处理解决咯。而且批处理的运行效率是显而易见的。

  当然,话也说回来了,批处理也不是万能的,能实现的功能还非常的有限。

    但对于在硬盘上查找文件,提取字符之类的,用批处理是最合适不过了。

作者: smileseeker     时间: 2006-10-26 01:38


  Quote:
Originally posted by NaturalJ0 at 2006-8-30 12:37 PM:
replace 你提供的源文件 要换文件的盘符 /s /r

比如想用D盘根目录的 abc.dll 换掉 C 盘内所有的 abc.dll

replace d:\abc.dll c:\ /s /r

晕!这么好的代码.........

简洁高效  自动搜索子目录

D:\scripts>replace /s /r 1.txt D:\scripts\1
正在替换 D:\scripts\1\1.txt
正在替换 D:\scripts\1\新建文件夹\1.txt
替换了 2 文件

[ Last edited by smileseeker on 2006-10-26 at 01:45 AM ]
作者: weilong888     时间: 2006-10-27 00:48
这replace/s /r是利害。
作者: leoson88     时间: 2007-3-12 14:52
replace命令又学了一招,收下了