Windows批处理:在文件中查找字符串中带有“[”的字符串
问题描述:
我有一个函数已经能够删除所有在几个文件中不包含字符串的行,它对于使用普通字符串非常有效:Windows批处理:在文件中查找字符串中带有“[”的字符串
@echo off
set "string_to_find=level.waypoints["
for /f "tokens=*" %%a in ('dir /B *.gsc') do (
set "tempfile=%temp%\%%a"
if exist "%tempfile%" del "%tempfile%" >NUL
findstr /C:"%string_to_find%" "%~dp0\%%a" >> "%tempfile%"
if not errorlevel 1 (
del "%%a" >NUL
move /Y "%tempfile%" "%~dp0\%%a" >NUL
if exist "%tempfile%" del "%tempfile%" >NUL
echo File "%~dp0\%%a" processed successfully
) else (
echo Problem processing file "%~dp0\%%a"
)
)
如果我搜索只是“level.waypoints”(没有“[”)工作正常,但我不想保留的几行不会被删除。我需要搜索“level.waypoints [”来真正删除我需要的所有行,但是因为char“[”会使所有内容出错,搞乱临时文件,最后给出错误“file not发现“...
我认为应该有一些字符,我需要把之前”[“像”[“使它的工作,但我找不到它...尝试已经很多,但没有运气。 :/
那么我怎样才能搜索字符串“level.waypoints [”和工作?
感谢
答
论@jmoon发送的链接说:
特殊情况 命令少数遵循的规则略有不同,FINDSTR,REG和RUNAS所有使用\作为转义字符,而不是的^
尝试和工作!所以结束字符串是“level.waypoints \ [”
干杯!
你会想要一个转义字符。看到这个︰https://ss64.com/nt/syntax-esc.html – jmoon
haven'tr尝试过你的脚本,但'findstr/c:“level.waypoints [”* .txt'在我的位置正常工作。无论如何,你将有更好的运气与PowerShell –
@jmoon谢谢!在那个页面中,我发现为什么“^”不起作用,只需要使用“\”。现在工作很好!干杯! – Hajas