delims=? 中的双引号
Double quotes in delims=?
我对批处理脚本很陌生,但在我的最后一个问题中,我试图从一行文本中提取 link,具体来说:
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
)
备注:
- 我没有对报价进行标记,而是对
=
(之前)和 >
(之后)进行了标记。因为,如您所知,引号很难
- 我总是最后做熟食。否则它可能认为 delims 和 tokens 之间的 space 是分隔符。
- 然后它使用
SET
语法,允许您用一个字符替换另一个字符以将所有出现的双引号替换为空。
-
SETLOCAL ENABLEDELAYEDEXPANSION
是必要的,否则,循环中 %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
我对批处理脚本很陌生,但在我的最后一个问题中,我试图从一行文本中提取 link,具体来说:
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
)
备注:
- 我没有对报价进行标记,而是对
=
(之前)和>
(之后)进行了标记。因为,如您所知,引号很难 - 我总是最后做熟食。否则它可能认为 delims 和 tokens 之间的 space 是分隔符。
- 然后它使用
SET
语法,允许您用一个字符替换另一个字符以将所有出现的双引号替换为空。 -
SETLOCAL ENABLEDELAYEDEXPANSION
是必要的,否则,循环中%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