【发布时间】:2021-10-11 12:11:17
【问题描述】:
我的目标是搜索一个包含在一个目录中的多个 .config 文件中的字符串。
文件夹结构如下:C:\Parent_Folder\child_folder\
子文件夹包含许多不同的文件夹,每个文件夹中都包含一个 .config 文件。
我正在尝试创建一个 .bat 文件,该文件将允许我搜索所有这些文件夹,然后将某个字符串替换为新字符串。
我找到了一种方法来搜索所有文件并将其打印到一个文档中,显示需要更改的位置:
findstr /i /s "DATABASE1" *.config > c:\temp\Changes.txt
但是,在创建批处理文件以搜索目录并用新字符串替换所有这些文件时,我遇到的文件路径不存在。
我查看了以下类似问题: Batch script to replace specific string in multiple files
Find and replace string in multiple files within a folder using windows Batch script
我目前使用的代码是:
@echo off
setlocal enableextensions disabledelayedexpansion
set "dir1=C:\Parent_Folder\child_folder\"
set "search=database1"
set "replace=db2"
for /f "delims=" %%i in ("%dir1%\*.config") do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
>>"%configFile%" echo(!line!
endlocal
)
@pause
我一直遇到的错误是找不到指定的路径,我认为可能是由于环境变量,所以我在那里添加了路径并在.bat文件中显示了echo %PATH%,路径确实存在,但是我不断收到错误消息,指出它不存在。
所以我不确定是否真的是其他原因导致了这个问题。
任何建议都会很棒。
【问题讨论】:
-
%configFile%的内容是什么?
标签: windows batch-file cmd directory