findstr "^" 不起作用,但 "^^" 可以查找起始行

问题描述

我的 findstr /c:"^string" 以有趣的方式工作。 要使用带有“^”的 findstr /r 查找每一行的顶部,有没有办法放置相同的查询?至少,我发现哪里有变量作为文件名, /c:"^^abc" 正确拾取,但 /c:"^abc" 没有。

>type test.txt
 abc
abc
>type test.bat
setlocal enabledelayedexpansion
set Myfile=test.txt
for /F "usebackq delims=" %%i in (`findstr /n /r /i /c:"^abc" "!Myfile!"`) do (
    echo %%i
)
goto :eof
>test.bat
1: abc
2:abc
>

只有当我放了 2 个 "^"s,即 /c:"^^abc",然后,

...
for /F "usebackq delims=" %%i in (`findstr /n /r /i /c:"^^abc" "!Myfile!"`) do (
...

>test.bat
2:abc
>

或者,当我使用 %Myfile% 而不是 !Myfile! 时,它看起来可以使用 c:"^abc"。但是,每次运行时,Myfile 都会有所不同。所以 %variable% 或immediate_value 对我不起作用。

有没有什么方法可以进行通用查找(是否有任何可用的开关?),这样我每次编写代码时都不需要检查?这将减少相当多的调试时间。

仅供参考,替换!Myfile!使用 %%x 再放置一个“For”循环,可以使用 Single“^”。这是我可以忘记“^^”的唯一方法!Myfile!暂时。

>type test2.bat
setlocal enabledelayedexpansion
set Myfile=test.txt
for /F "usebackq delims=" %%h in (`dir /a-d /b "!Myfile!"`) do (
    for /F "usebackq delims=" %%i in (`findstr /n /r /i /c:"^abc" "%%h"`) do (
        echo %%i
    )
)
goto :eof
>test2.bat
2:abc
>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)