【问题标题】:Passing a Path with '&' to Batch File将带有“&”的路径传递给批处理文件
【发布时间】:2015-03-22 14:52:24
【问题描述】:

我正在尝试从另一个程序传递一个批处理文件的路径。另一个程序使用 BASIC 作为脚本语言。

所以,我通过 Shell() 命令调用批处理文件。

在 shell 命令中,我试图传入一个带有符号“&”的路径。但是,当它到达批处理文件时,批处理文件将 & 视为一种转义序列(我认为)。

例如:

路径:C:\Documents\R&D\Files

Shell("runscript.bat "C:\Documents\R&D\Files"")

在批处理文件中:

variable=~1
echo %variable%

我得到以下输出:

C:文档\R

更新

但是,如果我使用像 C:\Documents\RD\Files 这样的路径

这条路径会通过 find 并且 echo 会打印出来:

C:\Documents\RD\Files

【问题讨论】:

    标签: windows batch-file path cmd


    【解决方案1】:

    Windows 允许您使用^ 转义字符串中的下一个字符。试试R^&D如下图:

    C:\Users\Thomas>echo R^&D
    R&D
    

    【讨论】:

      【解决方案2】:

      我想你想使用不带引号的变量。(用引号括起来不会有问题)。然后你需要延迟扩展(并使用!而不是%访问变量):

      set "variable=%~1"
      echo "%variable%"
      setlocal enableDelayedExpansion
      echo !variable!
      

      这里我假设第一个参数包含 &

      另一个选项是for /f

      for /f %%a in ("%~1") do echo %%a
      

      【讨论】:

      • 第一个参数是 C:\Documents\R&D\Files。
      • @user2970916 - 然后测试上面的代码,看看它是否符合您的需求。不要伪造在双引号内传递参数。
      • 这成功了!谢谢。我会尝试看看我是否能弄清楚为什么会这样。
      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2019-10-31
      • 2021-06-17
      相关资源
      最近更新 更多