簡體   English   中英

批處理腳本 - 將字符串替換為從變量接收到的另一個字符串

[英]Batch script - replace string for another string from received from variable

我有這個批處理腳本,其目的是從輸入中檢索 URL,並將其保存到變量中。 然后這個 URL 應該有它的一部分,一個 3-4 個字母的字符串被另一個字符串替換,該字符串位於文件 (lista.txt) 的列表中。 然后,腳本應該為每個由字符串替換生成的新 URL 打開 Chrome 瀏覽器和一個選項卡。 我知道還有其他幾種方法可以做到這一點,但我打算繼續使用批處理文件並檢查我的錯誤在哪里。 該腳本似乎正在工作,直到我到達將字符串替換為來自變量的另一個字符串的地步。 這是腳本:

@echo off
set BROWSER=chrome.exe
set /p URL=Type the URL:
echo.
for /f %%i in (Lista.txt) do (
    set URL=%%URL:%IBOV%=%i%%
    echo %URL%
    START %BROWSER% -new-tab "%URL%"
)
Pause

lista.txt 的內容:

IBOV
GNDI3
USIM5
OIBR3
MEAL3
ETER3
COGN3
TASA4
BBDC4
ITUB4
SUZB3
VALE3
PETR4
RAIL3

看起來像經典的延遲擴展問題。 雖然我沒有預設您正在使用的 IBOV 變量,但無論是 Lista.txt 的內容,我都建議這可能對您有所幫助:

@echo off
setlocal enableDelayedExpansion
set BROWSER=chrome.exe
set /p URL=Type the URL:
echo.
for /f %%i in (Lista.txt) do (
    set URL=!URL:IBOV=%%i!
    echo !URL!
    START %BROWSER% -new-tab "!URL!"
)
Pause

此外,您以錯誤的方式訪問%%i令牌。

在腳本啟動之前是否真的設置了IBOV變量? 您可能需要拆分或子字符串替換。

CALL set "URL=%%URL:%IBOV%=%%i%%"
CALL    echo %%URL%%
CALL START "" %BROWSER% -new-tab "%%URL%%"

請搜索“延遲擴展”以獲取解釋。 這個“問題”已經被描述了數百次。 顯示的語法應該可以解決echo start不太確定,但閱讀delayed expansion應該提供指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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