“x86 : 无法将“x86”项识别为 cmdlet、函数...”的短路径解决办法

在终端中原始命令如下:

在执行任务: powershell -Command '& "C:\Program Files (x86)\NASM\nasm.exe"' -ArgumentList "-f win32 C:\Users\15879\Desktop\code\x86\Hello World.asm -o C:\Users\15879\Desktop\code\x86\Hello World.obj" -NoNewWindow -Wait 

x86 : 无法将“x86”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 21
+ & C:\Program Files (x86)\NASM\nasm.exe -ArgumentList -f win32 C:\User ...
+                     ~~~
    + CategoryInfo          : ObjectNotFound: (x86:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

在命令行中,如果路径包含空格,应该将整个路径放在双引号 " " 内。否则,PowerShell 会错误地将路径中的空格视为命令分隔符,从而将路径拆分成多个部分。

当使用 PowerShell 的 & 运算符来调用一个外部程序时,PowerShell 会直接执行命令,但是如果后面接的参数没有正确分隔和包围,PowerShell 会出现解析错误。

网上很多都说需要添加双引号包含空格,我修改了task.json文件:

 {
        "label": "build with NASM",
    "type": "shell",
    "command": "powershell",
    "args": [
        "-Command",
        "& \"C:\\Program Files (x86)\\NASM\\nasm.exe\"",
        "-f", "win32",
        "\"${file}\"",
        "-o", "\"${fileDirname}\\${fileBasenameNoExtension}.obj\"",
        "-NoNewWindow",
        "-Wait"
    ],
    "group": {
        "kind": "build",
        "isDefault": false
    },
        "problemMatcher": [],
        "detail": "使用NASM编译汇编代码"
  }

即使添加了双引号依然不行,vscode依然会解析出错,就是依然会因为空格导致解析错误。

下面我采用短路径的方法来避免空格的问题。

   {
        "label": "build with NASM",
        "type": "shell",
        "command": "powershell",
        "args": [
            "-Command",
            "& \"C:\\Progra~2\\NASM\\nasm.exe\" -f bin \"${file}\" -o \"${fileDirname}\\${fileBasenameNoExtension}.bin\""
        ],
        "group": {
            "kind": "build",
            "isDefault": false
        },
        "problemMatcher": [],
        "detail": "使用NASM编译汇编代码"
}

Windows 为长路径提供了短路径(8.3 格式),它避免了空格和其他特殊字符的问题。例如,C:\Program Files (x86) 的短路径通常是 C:\Progra~2

短路径格式不包含空格,因此它能够避免 PowerShell 将路径拆分成多个部分的问题。

这样我们相当于消除了空格的问题,避免了命令解析错误。

最后结果如下,证明vscode执行成功了该命令:

*   正在执行任务: powershell -Command '& "C:\Progra~2\NASM\nasm.exe" -f bin "C:\Users\15879\Desktop\code\x86\HelloWorld.asm" -o "C:\Users\15879\Desktop\code\x86\HelloWorld.bin"' 
*  终端将被任务重用,按任意键关闭。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值