使用 for 循环在文件夹的每个文件中查找一个字符串

奥马尔

我试图在文件中找到一个字符串“blabla”。如果我找到了字符串,我将用“bloblo”替换它,否则什么都不做。我想对文件夹中的所有文件执行此操作。

当我将脚本应用于一个文件时,它运行良好。当我使用 for 循环时,它不起作用。它不会进入 for 循环内部

这是我的脚本:

    set "Var1=blabla"
    set "Var2=bloblo"

FOR %%i IN (C:\Users\UserName\Desktop\TEST\*.txt) DO (      
        find /c "%Var1%" %%i
        if %errorlevel% equ 1 goto notfound
        call PathFile\FUNCTION_REPLACE.cmd %Var1% %Var2% %%i

        :notfound
)

我使用脚本“Function_replace”来替换值,这里是脚本:

SetLocal EnableExtensions DisableDelayedExpansion

Set "search=%~1"
Set "replace=%2"
Set "File=%3"

For /F "Tokens=1*Delims=]" %%A In ('Find /V /N ""^<"%File%"^&Break^>"%File%"'
)Do (Set "line=%%B"
    SetLocal EnableDelayedExpansion
    (If Not "%%B"=="" (Echo(!line:%search%=%replace%!)Else Echo()>>"%File%"
    EndLocal)

我曾经直接使用我文件夹中每个文件的替换函数调用。但是进入每个文件需要很长时间。这就是为什么我想在进入每个文件之前检查字符串是否存在(通过使用 find /c)。

你能看出问题出在哪里吗?

组合

根据您的最新编辑,这里有一个示例,它仅将包含要替换的字符串的文件发送到子函数:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "search=%~1"
Set "replace=%~2"
For /F Delims^=^ EOL^= %%A In ('FindStr /LIMP "%search%" *.*')Do Call :Sub "%%A"
GoTo :EOF

:Sub
Set "File=%~1"
For /F "Tokens=1*Delims=]" %%A In ('Find /V /N ""^<"%File%"^&Break^>"%File%"'
)Do (Set "line=%%B"
    SetLocal EnableDelayedExpansion
    (If Not "%%B"=="" (Echo(!line:%search%=%replace%!)Else Echo()>>"%File%"
    EndLocal)

请注意,该FindStr命令仅使用示例选项,而该/M选项对本解决方案很重要,您应该检查输出FindStr /?以确定您认为最合适的其他选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何写一个字符串的文件时使用换行?

是否可以使用bash从文本文件中检索2个特殊字符之间的一个字符串?

是否可以使用bash从文本文件中检索2个特殊字符之间的一个字符串?

在for循环中为一个字符串使用字符串替换方法

如何使用jQuery从字符串中删除最后一个字符?

使用sed将for循环中文件中第n个出现的字符串替换为另一个字符串中的sed

复制文件中的字符串,然后使用sed覆盖另一个字符串

使用给定的字符串打开URL | 在每个运行的URL上从字符串中删除一个字符

如何使用循环创建一个新的字符串而另一个字符串中没有空格

使用动态中的指针将一个字符串复制到另一个字符串

使用嵌套循环在另一个字符串中出现一个字符串

IF语句的indexOf使用&&在一个字符串中查找两个值

Java使用嵌套循环在另一个字符串中查找一个字符串出现的次数

使用数组和foreach循环从另一个字符串中获取一个字符串

转到行号,然后使用C ++在文件中编辑一个字符串

使用Matlab中的索引替换字符串中的一个字符

使用grep查找不在另一个字符串中的字符串

使用CASE查找某个整数并返回一个字符串

在文件名中添加一个字符串,仍然可以使用它

使用 for 循环在另一个字符串中查找一个字符串

使用数组中的第一个字符串查找未定义

使用 strchr 在 c 中的 4 个字符串中搜索一个字符

是否有一种 Pythonic 方法可以将一个字符串添加到一个目录中的每个文件的开头,该目录使用文件名而不是其扩展名?

使用条件 IF 将字符串中的每个字符与另一个字符进行比较

使用 for 循环在一个字符串中插入多个字符串

如何使用 Roslyn 生成一个字符串文字数组,每个字符串文字都包含在 #if 中?

使用javascript在另一个字符串中查找字符串的位置

使用javascript将文本文件中的多个字符串替换为一个字符串

如何使用shell脚本将变量中的字符串替换为文件中的另一个字符串