文件名含&时VS Code的code --diff命令执行异常求助
解决PowerShell 5.1中VS Code
code --diff 处理含&文件名的截断问题 针对PowerShell 5.1里执行code --diff对比含&的文件时,第二个文件名被截断为"R"且执行报错的问题,以下是几种可行的解决方法:
方法1:使用Start-Process传递参数
PowerShell的Start-Process支持单独指定每个参数,能规避特殊字符引发的解析错误:
Start-Process -FilePath "code" -ArgumentList "--diff", "R&D (cloud conflict 2-5-23).txt", "R&D.txt"
该命令会将每个参数独立传递给VS Code,确保文件名完整被识别。
方法2:使用--%停止解析符号
--%是PowerShell的停止解析标记,会让后续参数直接原样传递给外部命令,逻辑与CMD一致:
code --% --diff "R&D (cloud conflict 2-5-23).txt" "R&D.txt"
添加--%后,PowerShell不再处理后续特殊字符,直接将参数传给code命令,可正常解析带&的文件名。
方法3:通过cmd /c调用CMD执行命令
既然CMD能正常运行该命令,可在PowerShell里调用CMD执行:
cmd /c 'code --diff "R&D (cloud conflict 2-5-23).txt" "R&D.txt"'
这种方式利用CMD对参数的正确解析逻辑,绕过PowerShell 5.1的参数解析缺陷。
以上三种方法均可解决文件名截断问题,可根据脚本需求(如是否需要同步执行、是否需要捕获输出等)选择使用。
内容的提问来源于stack exchange,提问作者FOSS Guru
相关产品推荐
相关产品推荐

