【问题标题】:DOS work-around for the "&" character? [duplicate]“&”字符的DOS解决方法? [复制]
【发布时间】:2013-02-17 13:54:14
【问题描述】:

DOS 似乎不能很好地处理字符串中的“&”字符。我正在尝试解析 url,其中许多都有一个或多个 &。如果我这样做:

    set var = "http://finance.yahoo.com/mbview/threadview/?v=m&bn=2"
    echo %var%
    pause

我明白了

ECHO 已关闭。 按任意键继续 。 . .

删除 & 字符可以纠正这个问题,这将是一个合适的解决方法,但我需要在代码中执行此操作。有什么帮助吗?

【问题讨论】:

  • 用单引号代替 URL 怎么样?
  • 你真的在使用DOS 还是在谈论Windows 中的命令行?

标签: string command-line batch-file dos


【解决方案1】:

使用延迟扩展时不需要转义 &

setlocal EnableDelayedExpansion
set "var=http://finance.yahoo.com/mbview/threadview/?v=m&bn=2"
Echo !var!

【讨论】:

  • +1,这次你打败了我 :-) 我试图写一个完整的解释。
  • 那行得通。很不错。以为我沉没了。
  • 然而,虽然这条线工作正常:echo !str! > my.txt 这个会丢失 '&' 之后的所有内容,包括 '&': echo !str! |剪辑
  • echo !str! > my.txt 有效,但 echo !str! | clip 失败,因为管道创建了一个新的 cmd.exe 上下文,因此该行被解析了两次。有关更多信息,您应该打开一个新问题
  • 哦——所以你给了我一个只能工作一次的解决方案! LOL 看起来这类似于 byval/byref 场景。
【解决方案2】:

删除var和=之间的空格:

set var="http://finance.yahoo.com/mbview/threadview/?v=m&bn=2"
echo %var%
pause

【讨论】:

  • 实际上,我只是在问题框中输入了错误的代码——实际代码是按照您的方式输入的。谢谢。
【解决方案3】:

如果是 Windows 命令行,那一定是您要查找的内容。

set "var=http://finance.yahoo.com/mbview/threadview/?v=m^&bn=2"
echo %var%
pause

在代码中观看^&

【讨论】:

  • 这也行得通。好的!命令提示符语言很粗糙。
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2019-06-02
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
相关资源
最近更新 更多