命令提示错误“C:\Program”不是内部或外部命令、可运行程序或批处理文件

Posted

技术标签:

【中文标题】命令提示错误“C:\\Program”不是内部或外部命令、可运行程序或批处理文件【英文标题】: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是要运行的程序,其余的都是它的参数。 即使双引号也不起作用 【参考方案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 路径设置在引号中。这对我来说很好。

【讨论】:

以上是关于命令提示错误“C:\Program”不是内部或外部命令、可运行程序或批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

cmd命令行提示不是内部或外部命令怎么办

adb错误“'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。

Java环境变量设置成功后运行cmd时提示错误 不是内部或外部命令,也不是可运行的程序或批处理文件

提示IMP不是内部命令

mysql -uroot -p命令后却提示:“mysqld不是内部或外部命令,也不是可运行的程序”

cmd里提示 'wmic' 不是内部或外部命令,也不是可运行的程序, 怎么办?