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

5

我有一个文件夹里面有3000个文件。我想查找并替换其中的文本,用另一个文本来代替。我应该怎么做呢? 我是批处理脚本的新手。我可以在一个文件中进行替换,但不知道如何在多个文件中进行替换。

FOR /F %%L IN (lala.txt) DO (
    SET "line=%%L"
    SETLOCAL ENABLEDELAYEDEXPANSION
    set "x=!line:E:\Test=E:\Test\Temp!"
    echo f | xcopy /E !line! !x! 
    ENDLOCAL
)

我该如何编辑代码以替换所有文件中的字符串? 等待您的帮助。谢谢


1
使用for循环将1个文件的代码应用于所有文件。 - Balaswamy Vaddeman
不好意思,您上面的代码并没有替换文件中的任何字符串!lala.txt文件的内容仍然保持不变... - Aacini
2个回答

9

非常实用的工具。功能如广告所述。感谢您的提及! - bvj

3

你可以使用第二个循环来处理文件。

for %%f in (*.txt) do (
    FOR /F %%L IN (%%f) DO (
      SET "line=%%L"
      SETLOCAL ENABLEDELAYEDEXPANSION 
      set "x=!line:E:\Test=E:\Test\Temp!" 
      echo f | xcopy /E !line! !x! 
      ENDLOCAL
  )
)

这段代码仅展示了如何构建循环以处理所有文本文件。
内部代码使用了OP的代码,它不会替换任何内容,但这不是问题的关键。


我很好奇你为什么在循环内启用了延迟扩展,难道在循环外仅执行一次不是更有效吗? - PA.
和,echo|xcopy组合中有什么东西可以替换原始文件? - PA.
1
我只是从原始帖子中复制了代码块 :-) 但是EnableDelayedExpansion应该在循环内部,以实现安全切换技术 - jeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接