我对批处理脚本非常陌生,但在我的最后一个问题中,我试图从一行文本中提取链接,具体来说:
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批处理在此时崩溃,我猜这是错误的语法,但我不知道问题在哪里,也许在"部分?
发布于 2019-11-15 05:54:15
看看我们如何在双引号上delim它,没有周围的引号。我们已经在引号之间为%%a分配了变量,但是如果没有,那么为了从字符串中删除双引号,我们将变量%%a展开为%%~a (参见变量展开的for /? ):
@for /f delims^=^"^ tokens^=2 %%a in (output2.txt) do @echo %%~a发布于 2019-11-15 03:06:31
整洁的问题。
我会这样做的:
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%的原始值,这可能是错误的。我总是把它作为批处理文件中的第二行。从您已经拥有的数量来判断,我猜您已经看到了,但是如果没有,我发现ss64.com是最好的资源。
https://stackoverflow.com/questions/58869362
复制相似问题