在Python或F#中运行带参数的批处理文件

6 投票
3 回答
30715 浏览
提问于 2025-04-15 23:12

我在网站上搜索过,但没有找到完全符合我需求的内容。我创建了一个独立的应用程序,这个程序使用了我自己做的一个网络服务。为了运行这个客户端,我使用了:

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

撰写回答