首页 > 解决方案 > 如何使用 Windows 批处理文件从外部文件中搜索值并替换为另一个值

问题描述

我想使用一个 bat 文件来处理我的一项日常任务。让我解释:

我的文件名如下:

newfile_MRG.txt
newfile_DRK.txt
...

我有一双要换的。例如,我将在文件名中使用 XYZ 更改 MRG 或在文件名中使用 UWT 更改 DRK。我想将文件复制到另一个文件夹并在那里替换,例如它将是:

newfile_XYZ.txt
newfile_UWT.txt

我写了一个批处理文件:

@echo off
set Lang=
mkdir "Child_Locales"
copy *DRK.* "Child_Locales"
cd Child_Locales
ren *DRK.* *UWT.*
cd..
copy *MRG.* "Child_Locales"
cd Child_Locales
ren *MRG.* *XYZ.*
cd..

这不是最佳的。每次引入或更改新对时,我都必须更新脚本。

相反,我想创建一个 TXT 文件,其中写入这些对:

MRG=XYZ
DRK=UWT
...

我知道如何引入变量,但我无法设置循环并从外部文件中读取要搜索和替换的值。你能指导我怎么做吗?

标签: batch-file

解决方案


你可以用 for 循环来做到这一点:

@echo off
mkdir "Child_locales">nul
for /f "tokens=1,* delims==" %%i in (somefile.txt) do (
    copy "*%%i.*" "Child_Locales"
    ren "Child_Locales\*_%%i.*" "*_%%j.*"
)

推荐阅读