好的,所以我想按照这个分类指南在我的arduino pro micro上刷一个hex文件:
我真的很挣第2步。我遇到的问题是我的事情(不知道该怎么称呼它)看起来像这样:
""C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude" "-CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega32u4 -cavr109 -PCOM5 -b57600 -D -Uflash:wC:"\Users\My Name\Desktop\Layout\layout.hex:i""
我收到了这个错误:
'""C:\Program' is not recognized as an internal or external command,
可操作程序或批处理文件。
我尝试使用这些建议后的语音标记进行修复:
所以这就是我可能犯了一个小错误或许多重大错误的问题,但是你会非常感激。
答案 0 :(得分:2)
让我们看一个更简单的例子。您可以尝试像这样运行C:\Program Files (x86)\myapp\myprogram
:
C:\Program Files (x86)\myapp\myprogram --parameter:value
它不起作用,因为CMD做的第一件事是在空格上分割。这称为* tokenisation`,结果是令牌列表:
C:\Program
Files
(x86)\myapp\myprogram
--parameter:value
然后它接受第一个标记C:\Program
并尝试查找具有该名称的文件。
'C:\Program' is not recognized as an internal or external command
令牌化例程注重引号。当遇到引号时,它会剥离它,然后它不会将空格视为标记分隔符,直到它遇到下一个引号。
所以:
"C:\Program Files (x86)\myapp\myprogram" --parameter:value
Tokenises to:
C:\Program Files (x86)\myapp\myprogram
--parameter:value
出于某些原因,在你的例子中,你已经在整个事情中加入了更多的引用:
""C:\Program Files (x86)\myapp\myprogram" --parameter:value"
令牌化将双"
视为文字""
,因此现在它标记为:
""C:\Program Files
(x86)\myapp\myprogram
--parameter:value
因为没有可执行文件""C:\Program Files
而导致错误。
了解引用和标记化的工作原理。理解命令而不是盲目地复制它们,你应该能够解决这个问题。
答案 1 :(得分:1)
让我们分析你的字符串
""C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude" "-CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega32u4 -cavr109 -PCOM5 -b57600 -D -Uflash:wC:"\Users\My Name\Desktop\Layout\layout.hex:i""
问题就在于您的双引号""。这被解释为这两个引号之间的空字符串。这样使你的C:\ Program Files最终会在引号之外。
试试这个
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude" "-CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega32u4 -cavr109 -PCOM5 -b57600 -D -Uflash:wC:"\Users\My Name\Desktop\Layout\layout.hex:i"