You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下MinGW运行带空格路径.sh脚本报错的技术求助

解决Windows下双击带空格路径的.sh脚本通过MinGW运行出错的问题

原脚本遇到路径含空格时出现cd: too many arguments错误,核心原因是bash解析带空格的路径时未正确用引号包裹参数,导致路径被拆分成多个独立部分。以下是可行的修改方案:

方案一:通过变量传递路径

修改mingw64_open_with.cmd内容为:

@echo off
set "script_path=%~1"
C:\msys\usr\bin\env.exe MSYSTEM=MINGW64 c:\msys\usr\bin\bash.exe -l -c 'cd "$(dirname "$0")" && "$0"' "%script_path%"

关键说明:

  • set "script_path=%~1":移除%1自带的外层引号(如果存在),将路径安全存入变量,避免cmd层面的空格解析混乱。
  • bash命令用单引号包裹-c的参数:防止cmd解析内部的双引号,让bash能直接识别路径的引号包裹逻辑。
  • "$(dirname "$0")":通过$0接收传递的脚本路径,双引号包裹确保dirname处理带空格的路径时不拆分参数,cd命令也能正确定位到脚本所在目录。

方案二:直接通过bash参数传递

也可简化为无需变量的写法:

@echo off
C:\msys\usr\bin\env.exe MSYSTEM=MINGW64 c:\msys\usr\bin\bash.exe -l -c 'cd "$(dirname "$1")" && "$1"' -- "%~1"

关键说明:

  • --:作为bash的参数分隔符,确保后续的路径被当作普通参数传递,避免路径以-开头时被误判为命令选项。
  • "%~1":移除原路径的外层引号,作为$1传递给bash的命令,后续"$(dirname "$1")"和"$1"都能正确处理带空格的路径。

两种方案都能解决路径含空格时的错误,任选其一替换原脚本即可。

内容的提问来源于stack exchange,提问作者Michel Rouzic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:27:45