Windows上的check_call和命令行参数

时间:2012-05-02 18:49:38

标签: python windows batch-file command-line-arguments scons

我的python程序使用check_call在Windows上调用脚本:

import subprocess

subprocess.check_call(['my_script.bat', 'foo=bar'])

我希望my_script.bat收到一个命令行参数(foo=bar),而是接收两个(foobar)。换句话说,似乎等号正在转换为空格。一切都在Linux上按预期工作。

在Windows上格式化此字符串的正确方法是什么,my_script看到包含等号的单个参数?

my_script.bat

echo %1

在我的实际应用中,my_script.batscons.bat

1 个答案:

答案 0 :(得分:1)

这个案例在Windows 7下使用python2.7

测试就好了

<强> my_script.py

import sys
print sys.argv

python shell

>>> import subprocess
>>> subprocess.check_call('python', 'my_script.py', 'arg1', 'foo=bar')
['myscript.py', 'arg1', 'foo=bar']
0

您可能想要验证您的&#34; my_script&#34;正在处理传入的参数。

<强>更新

由于您已更新问题以反映您专门使用Windows批处理文件,因此以下是解决方案:http://geoffair.net/ms/batch.htm

  

注意:如果是分号,&#39 ;;&#39;或等号(=)用作命令   对于批处理文件的行参数,它被视为空格。对于   例如,在以下test.bat批处理文件中 -

等号是一个特殊字符,将被替换为空格。它需要引用:

subprocess.check_call(['my_script.bat', '"foo=bar"'])