[英]Double quotes in delims=?
我对批处理脚本很陌生,但在我的最后一个问题中,我试图从一行文本中提取一个链接,特别是:
83: href="https://beepbeep.maxresdefault.rar"><img
我想要的是这样的:
https://beepbeep.maxresdefault.rar
有人建议使用for /f
来分隔字符串,我想将每个"
标记分开,只取第二个标记,因为我想要的被困在两个""
之间。
这是我所拥有的:
for /f "delims=^" tokens=^2" %%G in (output2.txt) do @echo %%G %%H >> output3.txt
此时批处理崩溃,我猜这是错误的语法,但我不确定问题出在哪里,也许在"
部分?
整洁的问题。
我会这样做:
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=2 delims=^>=" %%i in (output2.txt) do (
set x=%%i
set x=!x:"=!
echo !x! >> output3.txt
)
笔记:
=
(之前)和>
(之后)上标记化。 因为,正如您已经知道的那样,报价很难SET
语法,允许您用一个字符替换另一个字符,以将所有出现的双引号替换为空。SETLOCAL ENABLEDELAYEDEXPANSION
是必要的,因为否则,循环中%x%
的每次评估都使用 %x %x%
的原始值,这可能是错误的。 我总是将此作为批处理文件中的第二行。 从你已经拥有多少来判断,我猜你已经看过了,但如果你还没有看过,我发现 ss64.com 是最好的资源。
https://ss64.com/nt/syntax-dequote.html
看看我们delim
在双引号上定界,而不用引号。 我们已经将引号之间的变量分配给%%a
,但如果我们没有,那么为了从字符串中删除双引号,我们将变量%%a
扩展为%%~a
(参见for /?
关于变量扩展):
@for /f delims^=^"^ tokens^=2 %%a in (output2.txt) do @echo %%~a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.