【问题标题】:Command Prompt Error 'C:\Program' is not recognized as an internal or external command, operable program or batch file命令提示错误“C:\Program”不是内部或外部命令、可运行程序或批处理文件
【发布时间】:2014-09-14 07:27:07
【问题描述】:

我正在尝试运行以下批处理命令。该命令已从 IDE 中提取,因此已确认可以正常工作。得到下面提到的错误。

我尝试了一些带有双引号的变体,但没有奏效。 即使在 powershell 上,它也有相同的消息。

C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe F:\CP001\source\Meter\Main.c -D Hardware_P20E -D Calibration_code -D _Optical -D _Configuration_TS0382 -o F:\CP001\Temp\C20EO\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --debug -D__MSP430F425 -e --double=32 --dlib_config C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\lib\dlib\dl430fn.h -Ol --multiplier=16 --segment __data16=DATA16 --segment __data20=DATA20

更新:

尝试使用引号的解决方案会以某种方式混淆编译器

【问题讨论】:

  • 你需要将命令放在双引号"中,否则命令提示符会认为C:\Program是要运行的程序,其余的都是它的参数。
  • 即使双引号也不起作用

标签: batch-file command-line msp430 iar


【解决方案1】:

如果目录中有空格,请在其周围加上引号。这包括您正在调用的程序,而不仅仅是参数

"C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe" "F:\CP001\source\Meter\Main.c" -D Hardware_P20E -D Calibration_code -D _Optical -D _Configuration_TS0382 -o "F:\CP001\Temp\C20EO\Obj\" --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --debug -D__MSP430F425 -e --double=32 --dlib_config "C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\lib\dlib\dl430fn.h" -Ol --multiplier=16 --segment __data16=DATA16 --segment __data20=DATA20

【讨论】:

  • +1 是,并且必须引用带有空格的参数(如 --dlib_config 的参数)。
  • 我尝试了您的解决方案。它以某种方式混淆了编译器。我已经在上面发布了新消息。
【解决方案2】:

您只需将程序文件放在双引号中,其余命令不需要任何引号。

C:\"Program Files"\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe F:\CP00 .....

【讨论】:

  • 不好的做法。 Embedded Workbench 7.0 中的空格是怎么回事?
  • @dheerajS 我试过了
  • 遗憾的是,当我尝试在 npm 的 package.json 中为脚本创建命令时,这是唯一对我有用的东西
  • 双引号完整路径对我不起作用。我正在使用 MSSQL 执行命令,EXEC xp_cmdshell 'C:\"Program Files"\7-Zip\7z.exe a "C:.....
【解决方案3】:

这似乎不时发生在对命令行非常敏感的程序中,但一种选择是只使用 DOS 路径而不是 Windows 路径。这意味着C:\Program Files\ 将解析为C:\PROGRA~1\,并且通常会避免任何间距问题。

要获取短路径,您可以创建一个快速批处理文件来回显短路径:

@ECHO OFF
echo %~s1

然后调用如下:

C:\>shortPath.bat "C:\Program Files"
C:\PROGRA~1

【讨论】:

  • 我尝试将我的 PATH 变量设置为使用 %ProgramFiles(x86)% 没有运气,因为我猜它仍然解决了带有空格的路径 - 但您的解决方案有效,最终使用“PROGRA~2”,谢谢这么多
  • @joshcomley,是的,对于Program Files(x86),请参阅confluence.atlassian.com/doc/…Progra~1 = 'Program Files'Progra~2 = 'Program Files(x86)'
【解决方案4】:

尝试将 cd 放在文件路径之前

示例:

C:\Users\user>cd C:\Program Files\MongoDB\Server\4.4\bin

【讨论】:

    【解决方案5】:

    如果目录中有空格,请在其周围加上引号。这包括 您正在调用的程序,而不仅仅是参数

    "C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe"

    另外 - "${workspaceFolder}"(项目的目录)中的空格可能会混淆编译器!

    至少我的抛出了各种错误(就像上面那样,但我已经修复了编译器路径),我终于注意到它在 PC 1 上编译(目录 没有 空格)并且不会编译 PC 2 (目录 带有 个空格)。

    实际上不知道在哪里加上引号 ("") 才能使这项工作发挥作用,因为 ${workspaceFolder}${fileDirname} 是 VSC 中的 predefined variable 引用...

    【讨论】:

    • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
    【解决方案6】:

    我在使用 R 脚本的 Windows 命令行 Rscript.exe 时遇到了类似的问题,它对路径中的空格非常敏感。解决方案是使用 windows subst 命令创建二进制文件夹的虚拟路径。

    以下失败:"C:\Program Files\R\R-3.4.0\bin\Rscript.exe"

    以下操作成功:

    subst Z: "C:\Program Files\R\R-3.4.0"
    Z:\bin\Rscript.exe
    

    上述解决方案不起作用的原因显然与 Rscript.exe 可执行文件自己的工作目录(其中有一个空格)的内部路径解析有关,而不是与 windows 命令行混淆空间。因此使用~" 在命令行解决问题是没有实际意义的。必须在缺少空格的路径中调用可执行文件。

    【讨论】:

      【解决方案7】:

      大多数时候,问题在于您在 .m2 存储库中存在的 settings.xml 中为“java home”和“javac”标签提到的路径,而问题不在于您的路径变量或 Java_Home多变的。 如果您检查并更正相同的内容,您应该能够成功执行您的命令。 - 贾辛德

      【讨论】:

        【解决方案8】:

        只需转到文件夹路径并在其上键入 cmd。然后按 ENTER enter image description here

        【讨论】:

          【解决方案9】:

          我相信詹姆斯·亨特的回答会解决问题。

          @user3731784:在您的新消息中,编译器似乎因为“C:\Program Files\IAR systems\Embedded Workbench 7.0\430\lib\dlib\d1430fn.h”参数而感到困惑。你为什么在其他编译器开关的中间给出这个头文件? 请更正此问题并重试。 此外,最好在所有编译器切换之后而不是在开头给出源文件名。

          【讨论】:

          • 该命令已从原始 IDE 中提取。必须使用其中的所有开关。不能忽视任何事情。唯一的问题是 -O 开关,因为它后面没有空格。休息工作
          【解决方案10】:

          转到“开始”并搜索 cmd。右键单击它,属性然后将Target 路径设置在引号中。这对我来说很好。

          【讨论】:

            猜你喜欢
            • 2019-04-25
            • 2022-10-07
            • 1970-01-01
            • 2023-03-27
            • 2011-09-06
            • 2022-01-25
            • 1970-01-01
            • 1970-01-01
            • 2022-11-10
            相关资源
            最近更新 更多