[英]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.