使用Windows批处理脚本在文件夹中的多个文件中查找和替换字符串

时间:2014-03-06 19:58:36

标签: batch-file cmd

我正在尝试编写批处理文件来查找和替换文件夹中多个文件中的字符串。但是我收到了这个错误:

  

无法执行循环复制

知道为什么会这样吗?

@echo off
SETLOCAL
for %%* in (.) do set foldername=%%~n*
SET stringtofindreplace=XXXX
for %%f in (*.fmw) do (
    echo Processing %%f...
    fOR /F "delims=" %%l IN (%%f) DO (
         SET "line=%%l"
         SETLOCAL ENABLEDELAYEDEXPANSION 
         set "x=!line:%stringtofindreplace%=%foldername%!" 
         echo(!x!
         ENDLOCAL)
    )>%%~nf.new
)
GOTO:EOF

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL

:: no idea what this is aimed at doing...??

for %%* in (.) do set new=%%~n*
SET new=newstring
SET old=XXXX
for %%f in (*.fmw) do (
    echo Processing %%f...
    (
    FOR /F "delims=" %%l IN (%%f) DO (
        SET "line=%%l"
        SETLOCAL ENABLEDELAYEDEXPANSION 
        set "x=!line:%old%=%new%!" 
        ECHO(!x!
    ENDLOCAL
    )
    )>%%~nf.new
)
GOTO :EOF

我不知道你要对第一个for做什么,所以我只是做了一个明显的替换字符串。

您需要添加"delims="选项才能将整行发送到%%l

确保ECHO(!x!

上没有尾随空格

这将从每个* .fmw文件生成一个名为* .new的新文件。

答案 1 :(得分:0)

源文件夹包含目标文件夹时发生

Cannot perform a cyclic copy错误,因此尝试复制所有文件,包括已复制的文件。

这会给你这个错误。

xcopy c:\apple\*.* c:\apple\backup\ /s