【发布时间】:2017-06-12 15:03:03
【问题描述】:
我正在尝试制作一些 BAT 文件,这些文件将扫描所有扩展名为 .txt 的文件,列出它们并替换多个关键字。我不知道txt文件名是什么。
这是我得到的:
@echo off
setlocal enabledelayedexpansion
set /a counter=1
set "SEARCH_A=KEYWORD1"
set "REPLACE_A=REPLACED1"
set "SEARCH_B=KEYWORD2"
set "REPLACE_B=REPLACED2"
set "newfile=Output.txt"
for /r %%i in (*.txt) do (
echo %%~nxi>> search_result.txt
set "textfile=%%~nxi"
set "newfile=Output.txt"
(for /f "delims=" %%j in (!textfile!) do (
set "line=%%j"
setlocal enabledelayedexpansion
set "line=!line:%SEARCH_A%=%REPLACE_A%!"
set "line=!line:%SEARCH_B%=%REPLACE_B%!"
echo(!line!
endlocal
))>"%newfile%"
del !textfile!
rename %newfile% !textfile!
set /a counter=!counter!+1
)
endlocal
而且它确实有效。我有两个问题:
- 关键字替换不适用于名称中有两个单词且中间有空格的 TXT 文件。有什么办法可以解决吗?
- 它还会检查目录中比 .bat 文件级别低的文件。如何限制它只检查与 .bat 相同级别的文件?
请帮助我。顺便说一句,我是个菜鸟。
【问题讨论】:
标签: windows file batch-file text replace