簡體   English   中英

delims中的雙引號=?

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

筆記:

  • 我沒有在報價上標記化,而是在= (之前)和> (之后)上標記化。 因為,正如您已經知道的那樣,報價很難
  • 我總是最后做delims。 否則它可能會認為分隔符和標記之間的空間是分隔符。
  • 然后它使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM