我正在尝试制作一些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
它有点有效。我有两个问题:
请帮帮我。我总是很不错。
答案 0 :(得分:1)
将所有(可能)包含空格的文件/ foldernames包含在引号中(更好:习惯用引号括起所有文件/ foldernames):
(for /f "usebackq delims=" %%j in ("!textfile!") do (
(usebackq
需要实际处理文本文件,而不仅仅是其名称的字符串)
del "!textfile!"
rename "%newfile%" "!textfile!"
for /r %%i in (*.txt) do (
:/r
表示“递归”(包括子目录)。只需跳过/r
即可处理当前没有子文件夹的文件夹。