在Python或F#中运行带参数的批处理文件
我在网站上搜索过,但没有找到完全符合我需求的内容。我创建了一个独立的应用程序,这个程序使用了我自己做的一个网络服务。为了运行这个客户端,我使用了:
C:/scriptsdirecotry> "run-client.bat" param1 param2 param3 param4
我该如何用Python或F#来编写这个呢?看起来应该很简单,但我在网上没有找到任何和我想要的完全匹配的内容。
3 个回答
2
你可以使用 fsi.exe 来调用一个 F# 脚本(.fsx 文件)。假设你在文件 "Script.fsx" 中有以下代码:
#light
printfn "You used following arguments: "
for arg in fsi.CommandLineArgs do
printfn "\t%s" arg
printfn "Done!"
你可以通过命令行来调用它,使用以下语法:
fsi --exec .\Script.fsx hello world
然后,FSharp 交互式会返回:
You used following arguments:
.\Script.fsx
hello
world
Done!
关于 fsi.exe 命令行选项的更多信息,可以在 msdn 上找到:http://msdn.microsoft.com/en-us/library/dd233172.aspx
8
在F#中,你可以使用来自System.Diagnostics
命名空间的Process
类。最简单的运行命令的方法是这样的:
open System.Diagnostics
Process.Start("run-client.bat", "param1 param2")
不过,如果你需要提供更多的参数,那你可能需要先创建一个ProcessStartInfo
对象(这个对象可以让你指定更多的选项)。
15
Python也是这样。
import os
os.system("run-client.bat param1 param2")
如果你需要异步操作或者重定向标准输出流。
from subprocess import *
p = Popen(['run-client.bat', param1, param2], stdout=PIPE, stderr=PIPE)
output, errors = p.communicate()
p.wait() # wait for process to terminate