【问题标题】:Batch script - replace string for another string from received from variable批处理脚本 - 用从变量接收的另一个字符串替换字符串
【发布时间】:2021-03-02 04:43:27
【问题描述】:

我有这个批处理脚本,其目的是从输入中检索 URL,将其保存到变量中。然后这个 URL 应该有它的一部分,一个 3-4 个字母的字符串替换为另一个字符串,该字符串位于文件 (lista.txt) 的列表中。然后,该脚本应打开 Chrome 浏览器,并为字符串替换生成的每个新 URL 打开一个选项卡。 我知道还有其他几种方法可以做到这一点,但我打算继续使用批处理文件并检查我的错误在哪里。该脚本似乎一直在工作,直到我用来自变量的另一个字符串替换字符串。 这是脚本:

@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

【问题讨论】:

  • set URL=%%URL:%IBOV%=%%i%%%i前面有一个%的符号太少,那么必须在前面加上call。您要替换变量%IBOV% 的值还是文字字符串IBOV?如果是后者,请删除它周围的%-标志!

标签: string batch-file


【解决方案1】:

看起来像经典的delayed expansion 问题。虽然我没有预设您正在使用的 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 变量集吗?您可能需要拆分或子字符串替换。

【讨论】:

  • 当提示我输入 URL 时,我应该在文本中输入带有 IBOV 的内容,例如:www.ibov.com 或 www.test.com/ibov。所以目标是,对 ibov 进行条带化并放入 lista.txt 中的每一个字符串。例如,www.ibov.com 应替换为 www.gndi3.com。
【解决方案2】:
CALL set "URL=%%URL:%IBOV%=%%i%%"
CALL    echo %%URL%%
CALL START "" %BROWSER% -new-tab "%%URL%%"

请在 SO 中搜索“延迟扩展”以获得解释。这个“问题”已经被描述了数百次。显示的语法应该可以解决echo。不太确定start,但阅读delayed expansion 应该提供指针。

【讨论】:

  • 抱歉,它没有用。列表的内容没有正确替换字符串
  • 这是代码:@echo off setlocal ENABLEDELAYEDEXPANSION set BROWSER=chrome.exe set /p URL=Digite a URL do dia: echo. for /f %%i in (Lista.txt) do ( echo %%i call set "URL=%%URL:%ibov%=%%i%%" call echo %%URL%% )
  • 这是响应:C:\Blaster\Programing>Bolsa3.bat Digite a URL do dia:www.ibov.com IBOV =IBOV%" 此时出乎意料。www.ibov.com GNDI3 =GNDI3%”这个时候出乎意料。 www.ibov.com USIM5 =USIM5%”此时出乎意料。www.ibov.com OIBR3 =OIBR3%”此时出乎意料。 www.ibov.com MEAL3 =MEAL3%”此时出乎意料。www.ibov.com ETER3 =ETER3%”此时出乎意料。 www.ibov.com COGN3 =COGN3%”此时出乎意料。www.ibov.com TASA4 =TASA4%”此时出乎意料。 www.ibov.com
  • 请记住,所请求的输入应始终由内部包含单词 ibov 的内容来回答,例如:www.ibov.com 或 www.uol.com/ibov
  • 如果我在提示时发出 www.ibov.com,当我要求回显 URL 变量时,结果总是 www.ibov.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
相关资源
最近更新 更多