批量文件以递归方式复制/重命名目录并查找/替换文件内容

时间:2015-10-08 20:49:38

标签: windows batch-file

需要一个Windows批处理文件来制作目录树的副本,并将给定old_name的出现重命名为给定的new_name,请参阅下面的示例。 我查看robocopyxcopy无效

String old = "old_name";
String new = "new_name";

current directory:
C:\old_name
C:\old_name\table
C:\old_name\garage\old_name\chair\a.file (contains text I am OLD_NAME)
C:\old_name\garage\old_name\b.file (contains text I am old_name)

desired outcome:
C:\new_name
C:\new_name\table
C:\new_name\garage\new_name\chair\a.file (contains text I am NEW_NAME)
C:\new_name\garage\new_name\b.file (contains text I am new_name)

编辑: 显示路径中未更改为新名称的一个节点。

OLD_NAME = twintyone

NEW_NAME =一个

C:\用户\ fredJ \ AndroidStudioProjects \一个\应用\ SRC \主\的java \ MX \ COM \商人\ twintyone

1 个答案:

答案 0 :(得分:1)

我不知道任何单个实用程序可以执行您想要的任何操作,但如果部署我的JREPL.BATJREN.BAT实用程序,那么一个简单的批处理脚本可以轻松有效地实现您的目标。

JREPL.BAT和JREN.BAT都是混合JScript /批处理脚本,可以在任何Windows机器上从XP开始本地运行 - 不需要复制或安装任何可执行文件。

批处理脚本有3个简单的步骤:

  1. 使用XCOPY复制目录树
  2. 使用JREN.BAT将OLD_NAME文件夹正确重命名为NEW_NAME
  3. 使用FINDSTR识别包含OLD_NAME的文件,使用FOR / F迭代结果,并使用JREPL.BAT编辑每个找到的文件
  4. 我还添加了一些ECHO语句,以便您可以按照进度

    注意 - 以下内容未经测试。如果有错误,应该有一个简单的修复 - 基本设计是健全的

    @echo off
    set "old=OLD_NAME"
    set "new=NEW_NAME"
    xcopy "c:\%old%\*" "c:\%new%" /i /s
    call jren "^.+" "%new%" /d /s /p "c:\%new%" /fm "%old%"
    for /f "delims=" %%F in ('findstr /mspc:"%old%" "c:\%new%\*"') do (
      echo Editing "%%F"
      call jrepl "%old%" "%new" /l /f "%%F" /o -
    )
    echo(
    echo Done!