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



需要一个windows批处理文件来复制目录树,并将给定的old_name重命名为给定的new_name,请参见下面的示例。我看了看robocopyxcopy都没有用

String old = "old_name";
String new = "new_name";
current directory:
C:old_name
C:old_nametable
C:old_namegarageold_namechaira.file (contains text I am OLD_NAME)
C:old_namegarageold_nameb.file (contains text I am old_name)
desired outcome:
C:new_name
C:new_nametable
C:new_namegaragenew_namechaira.file (contains text I am NEW_NAME)
C:new_namegaragenew_nameb.file (contains text I am new_name)

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

old_name = twintyone

new_name = 1

用户

C: fredJ AndroidStudioProjects app src 主要 java mx com 商人 twintyone

我不知道有哪一个实用程序可以做你想做的一切,但是如果你部署我的JREPL.BAT和JREN.BAT实用程序,那么一个简单的批处理脚本就可以轻松有效地完成你的目标。

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

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

  1. 使用XCOPY复制目录树
  2. 使用JREN.BAT适当地将OLD_NAME文件夹重命名为NEW_NAME
  3. 使用FINDSTR识别包含OLD_NAME的文件,使用FOR/F迭代结果,并使用JREPL.BAT编辑每个找到的文件

我还添加了一些ECHO语句,以便您可以跟踪进度

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

@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!

最新更新