为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Windows批处理文件中替换子字符串

/ 猿问

如何在Windows批处理文件中替换子字符串

慕瓜9086354 2019-08-13 14:21:19

如何在Windows批处理文件中替换子字符串

谁能告诉我使用批处理文件在Windows ...如何从文件中读取并替换字符串= bath从包含文件= bath Abath Bbath XYZbathABC用绳子hello使输出像hello Ahello Bhello XYZhelloABC



查看完整描述

3 回答

?
皈依舞

从Andriy M扩展,是的,您可以从文件中执行此操作,即使是具有多行的文件也是如此

@echo offsetlocal EnableExtensions EnableDelayedExpansionset "INTEXTFILE=test.txt"set "OUTTEXTFILE=test_out.txt"set "SEARCHTEXT=bath"set "REPLACETEXT=hello"for /f "delims=" %%A in ('type "%INTEXTFILE%"') do (
    set "string=%%A"
    set "modified=!string:%SEARCHTEXT%=%REPLACETEXT%!"
    echo !modified!>>"%OUTTEXTFILE%")del "%INTEXTFILE%"rename "%OUTTEXTFILE%" "%INTEXTFILE%"endlocal

编辑

感谢David Nelson,我更新了脚本,因此它不再具有硬编码值。


查看完整回答
反对 2019-08-13
?
翻翻过去那场雪

SET string=bath Abath Bbath XYZbathABC

SET modified=%string:bath=hello%

ECHO %string%

ECHO %modified%

编辑


一开始没有看到你想要在替换之前从文件中读取字符串。


好吧,对于批处理文件,您没有太多处理文件的工具。在这种特殊情况下,您必须读取一行,执行替换,然后输出修改后的行,然后......那么呢?如果你需要在所有文件中替换'bath'的所有发生,那么你将不得不使用一个循环:


@ECHO OFF

SETLOCAL DISABLEDELAYEDEXPANSION

FOR /F %%L IN (file.txt) DO (

  SET "line=%%L"

  SETLOCAL ENABLEDELAYEDEXPANSION

  ECHO !line:bath=hello!

  ENDLOCAL

)

ENDLOCAL

您可以向文件添加重定向:


  ECHO !line:bath=hello!>>file2.txt

或者,您可以将重定向应用于批处理文件。它必须是不同的文件。


编辑2


添加了适当的延迟扩展切换,以便正确处理具有批处理脚本语法特殊含义的某些字符,例如!,^et al。


查看完整回答
反对 2019-08-13
?
呼唤远方

为了避免空行跳过(在conf文件中提供可读性),我将aflat和jeb的答案(这里)结合起来:

@echo offsetlocal enabledelayedexpansionset INTEXTFILE=test.txtset OUTTEXTFILE=test_out.txtset SEARCHTEXT=bathset REPLACETEXT=helloset OUTPUTLINE=for /f "tokens=1,* delims=¶" %%A in ( '"findstr /n ^^ %INTEXTFILE%"') do (
   SET string=%%A
   for /f "delims=: tokens=1,*" %%a in ("!string!") do set "string=%%b"
   if  "!string!" == "" (
       echo.>>%OUTTEXTFILE%
   ) else (
      SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%!
      echo !modified! >> %OUTTEXTFILE%
  ))del %INTEXTFILE%rename %OUTTEXTFILE% %INTEXTFILE%


查看完整回答
反对 2019-08-13
  • 3 回答
  • 0 关注
  • 1016 浏览
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信