问题描述
我的 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 (将#修改为@)