使用批处理文件命令替换字符串

时间:2014-02-23 08:22:05

标签: windows batch-file

想要使用批处理文件命令替换文本文件“list.txt”中的某些字符串。

我想使用windows中的一些批处理文件命令将文件“list.txt”中的C:\替换为“adb install C:\”。

从“list.txt”

中删除包含“.txt”文件的行 在linux中我曾经用grep命令

执行此操作

怎么做?

3 个答案:

答案 0 :(得分:0)

尝试以下

for /f "usebackq delims=." %x in (`findstr C:\ list.txt`) do echo adb install %x
for / f将一次一个地挑选list.txt的内容

delims =。在第一个停止。缺点是,如果有两个。在文件名中,它只在第一个停止。

答案 1 :(得分:0)

试试这个:

@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "inFileName=infile.txt"
SET "outFileName=outfile.txt"
(FOR /f "delims=" %%a IN ('FINDSTR /n "^" "%FileName%"') DO (
    SET "PrimLine=%%a"
    SETLOCAL enableDelayedExpansion
    SET "Line=!PrimLine:*:=!"
    SET "Line=!Line:C:\=adb install C:\!"
    IF "!Line:txt=!"=="!Line!" ECHO(!Line!
    ENDLOCAL
))>"%outFileName%"

答案 2 :(得分:0)

我一直在寻找一种快速而肮脏的方法来使用内置的批处理文件命令进行一些简单的搜索/替换,但是没有很多代码。这个问题在顶部弹出,@ Endoro的答案与我所需要的很接近,但是有一些问题。一个是错字(应该是%inFileName%而不是%FileName%),另一个是错字输出C:\=adb install C:\

下面是他的批处理脚本的修改版本,该脚本修复了两个问题并使用环境变量搜索和替换值。我不需要删除.txt行,因此删除了该部分。它没有经过广泛的测试,但是确实适合我的目的。也许它也会帮助其他人。

@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "inFileName=infile.txt"
SET "outFileName=outfile.txt"
SET "SearchVal=C:\"
Set "ReplaceVal=adb install C:\"
(FOR /f "delims=" %%a IN ('FINDSTR /n "^" "%inFileName%"') DO (
    SET "PrimLine=%%a"
    SETLOCAL enableDelayedExpansion
    SET "Line=!PrimLine:*:=!"
    SET "Line=!Line:%SearchVal%=%ReplaceVal%!"
    IF "%SearchVal%=%ReplaceVal%"=="!Line!" ECHO.
    IF NOT "%SearchVal%=%ReplaceVal%"=="!Line!" ECHO(!Line!
    ENDLOCAL
))>"%outFileName%"