在 PowerShell 中,若执行脚本所在路径包含通配符时,会导致 Start-Process 出错
比如在这样的路径:D:\[测试1]脚本测试\test
如果执行 Start-Process ..\setchar.exe 会报错:
Start-Process : 无法执行操作,因为通配符路径 D:\[测试1]脚本测试\test 无法解析为文件。 所在位置 行:1 字符: 1 ......
下面虽然还有一堆错,但是重点其实是在第一行
在 PS 中是有这些通配符:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_wildcards
实际能写在路径中的,主要就是 [、] 这两个字符
再根据 Start-Process 文档:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/start-process
执行该方法时实际还有一个默认参数:
-WorkingDirectory
指定新进程的起始位置。
如果未指定,则 cmdlet 默认为 FilePath 参数中指定的完全限定位置。 如果 FilePath 参数的值不是完全限定的,则它默认为调用进程的当前工作目录。
不支持通配符。 路径不得包含将解释为通配符的字符。
在未指定时,默认使用当前目录,但不知道它是怎么获取的当前目录,导致路径中的 [ ] 被认为是通配符
解决方法也很简单,显式指定一下工作目录即可:
Start-Process -FilePath "..\setchar.exe" -WorkingDirectory "..\"
唔,很是神奇。
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-07-20 debian 国内源