gpt4 book ai didi

windows - 将字符串作为参数发送到批处理脚本中时,^ 会加倍

转载 作者:行者123 更新时间:2023-12-04 02:16:21 26 4
gpt4 key购买 nike

这是我的代码:

set var1="`netsh int ipv4 show interface ^| findstr /I Network`"

call:GetEles %var1%
goto:eof

:GetEles
for /F "tokens=1 usebackq" %%F IN (%~1) do echo %%F
goto:eof

当我在运行时检查命令时, ^在函数内部翻倍 :GetEles :
for /F "token=1 usebackq" %%F IN (`netsh int ipv4 show interface ^^| findstr /I Network`) do echo %%F

翻倍 ^使我的脚本失败,我该如何解决?

最佳答案

正如其他人已经描述的那样,这是 call command 的一个令人讨厌的“功能”。 .

有几个选项可以解决这个问题:

  • 只需撤消子程序中的插入符号加倍:

    @echo off
    set "VAR=caret^symbol"
    call :SUB "%VAR%"
    exit /B

    :SUB
    set "ARG=%~1"
    echo Argument: "%ARG:^^=^%"
    exit /B
  • call引入第二个解析阶段,所以让第二个阶段扩展变量:

    @echo off
    set "VAR=caret^symbol"
    call :SUB "%%VAR%%"
    exit /B

    :SUB
    echo Argument: "%~1"
    exit /B
  • 通过引用传递值(所以是变量名)而不是通过值:

    @echo off
    set "VAR=caret^symbol"
    call :SUB VAR
    exit /B

    :SUB
    setlocal EnableDelayedExpansion
    echo Argument: "!%~1!"
    endlocal
    exit /B
  • 不要将变量值传递给子例程,而是在那里读取(全局)变量:

    @echo off
    set "VAR=caret^symbol"
    call :SUB
    exit /B

    :SUB
    echo Argument: "%VAR%"
    exit /B
  • 关于windows - 将字符串作为参数发送到批处理脚本中时,^ 会加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41769803/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com