cmd和node中运行命令行,文件路径带空格“C___program files”时报错,解决方案

同学们可以私信我加入学习群!


前言

electron开发的桌面端软件,如果下载到默认地址"C://program files"下,当代码里执行的命令行,需要获取地址时,可能会报错。


一、问题描述

我在nodejs环境运行命令行,命令行中有空格时,如:

bash 复制代码
C://program files/xxx.bat

直接运行,会报错,我在其他目录,模拟了一个目录,创建了一个带空格的文件夹------data test:

c 复制代码
G:\cnde\cnde-deploy-tool\electron\data\data test\startAll.bat

运行后,不出所料地报错了。

二、原因

因为nodejs环境插件问题,输入的报错信息乱码而且可能与直接运行命令行报错信息有出入,所以我把完整路径放到cmd中,再运行一遍: 根据报错信息可以发现,cmd在运行命令时,会在data test的空格处截断,这是因为空格在命令行中,会被认为是一个分隔符,我们平时运行命令时也是用空格来分割的,例如:

c 复制代码
node -v
javaw -jar xxx

三、解决

解决方式很简单,只要在有空格的命令前后包裹双引号即可:

c 复制代码
"G:\cnde\cnde-deploy-tool\electron\data\data test\startAll.bat"

在nodejs环境中,我们在运行的命令前后也包裹双引号即可:

c 复制代码
//handleCmd中封装了运行cmd命令方法,下面的参数中,如果包含空格会报错
await handleCmd(startAllBatPath)

//下面的参数,如果包含空格不会报错
await handleCmd(`"${startAllBatPath}"`)

总结

获取资源,或者联系我,都可以通过下面入口:

lizetoolbox.top:8080/qrCode_cont...

相关推荐
jay神12 小时前
基于 YOLOv8 的轴承缺陷检测(Web 版)
前端·人工智能·yolo
jay神12 小时前
基于 YOLOv8 的森林火灾检测系统(Web 版)
前端·yolo
code2cat13 小时前
HTML基础篇之第一张网页:从index.html到浏览器里的任务清单
前端·html
miss13 小时前
AI 改完不敢上线?OpenSpec 规约驱动开发实战
前端·代码规范·前端工程化
AiMan14 小时前
腾讯ima还是不可以导出左侧所有对话,只能单条导出,方法不对吗
前端
去伪存真14 小时前
并发量一高就装死?Agent 全链路“防猝死”手册
前端·agent
Moment14 小时前
AI 编程时代,聊聊我的 Mac mini 双屏桌面
前端·后端
AiMan14 小时前
先确认能不能一次把Microsofat Copilot所有内容打包一个文件导出
前端
总要学点什么14 小时前
第97篇:三维数据加载-城市建筑白模自定义着色器——让一条光带沿高度扫上去,快慢却由帧率说了算
前端·gis·webgl·cesium·着色器·空间分析·白模
上海懒图科技15 小时前
工厂厂区电子地图定位导航:厂区人车精准定位,安全合规双保障
前端·arcgis·vue