命令提示错误“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”不是内部或外部命令、可运行程序或批处理文件的主要内容,如果未能解决你的问题,请参考以下文章
adb错误“'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。
Java环境变量设置成功后运行cmd时提示错误 不是内部或外部命令,也不是可运行的程序或批处理文件