Windows下subprocess传递含逗号字符串至批处理时参数截断问题求助
解决Windows下subprocess传带逗号参数到批处理被截断的问题
问题根源:Windows批处理默认将逗号、空格、制表符等作为参数分隔符,导致含逗号的参数被拆分为多个片段,%9只能获取到逗号前的部分。
以下是两种可靠的解决思路:
方法一:给特殊参数加引号,批处理中去除引号获取完整内容
- 修改Python代码:将包含逗号的
curValue参数用双引号包裹后传入:
print(curValue) subprocess.call([BA_EDITING_SCRIPT, self.blazeInstallationFolder, self.repoFolder, curMetaphor, self.romProjectPath, curInstPath, curMetaphorType, curRule, curType, f'"{curValue}"']) # 为参数添加双引号
- 修改批处理代码:用
%~9替代%9,自动去除引号并获取完整参数:
echo ****** BA Editing JAR Calling Batch Script: initiated ****** echo %~9
方法二:批处理中用循环遍历参数获取目标值
无需修改Python代码,通过批处理的延迟扩展和循环遍历所有参数,精准定位第9个参数:
@echo off setlocal enabledelayedexpansion echo ****** BA Editing JAR Calling Batch Script: initiated ****** set "param_count=0" :: 遍历所有参数,计数到第9个时输出 for %%p in (%*) do ( set /a param_count+=1 if !param_count! equ 9 ( echo %%p goto :exit_loop # 找到目标参数后退出循环 ) ) :exit_loop endlocal
内容的提问来源于stack exchange,提问作者Baykal
相关产品推荐
相关产品推荐

