我可以毫无问题地运行以下代码:
echo topic = "def";ghi | grep -oP "(?<=topic = \").+?(?=\"";ghi)
但是如果我把它放在.bat文件中的for循环中,它就不再起作用了。
for /F "delims=" %%A in (urls.txt) do (
echo topic = "def";ghi | grep -oP "(?<=topic = \").+?(?=\"";ghi)
)
错误说.+?(? was unexpected at this time
。
这是为什么?
答案 0 :(得分:2)
这是因为)
语句中的第一个grep
正在关闭for
代码块。您需要将整个grep
参数包含在引号中,或者转义未使用插入符引用的任何括号。
for /F "delims=" %%A in (urls.txt) do (
echo topic = "def";ghi | grep -oP "(?<=topic = \"^).+?^(?=\"";ghi^)
)
我认为无论如何都是对的。它可能需要一些试验和错误。但是,只要您需要在批处理脚本中转义特殊字符,请使用^
。