使用子进程 运行 具有多个参数的可执行文件

Using subprocess to run an executable with multiple parameters

命令行如下所示:

cd C:\Program Files\Microsoft SQL Server0\COM

snapshot.exe -Publisher [publisher] -PublisherDB [TEST] -Distributor [dist] -Publication [merge] -ReplicationType 2 -DistributorSecurityMode 1

总共两条命令

到目前为止我有一些运气:

subprocess.run(["C:\Program Files\Microsoft SQL Server\150\COM\snapshot.exe","-Publisher [publisher] -PublisherDB [TEST] -Distributor [dist] -Publication [merge] -ReplicationType 2 -DistributorSecurityMode 1"])

这会运行 snapshot.exe 但表示 -Publisher [publisher] -PublisherDB [TEST] -Distributor [dist] -Publication [merge] -ReplicationType 2 -DistributorSecurityMode 1"] 不是有效参数。

在调用 run 时,每个单独的字符串也需要是单独的字符串。

cd 可能不是必需的(大多数明智的工具不关心它们 运行 在哪个目录中)但我也会添加一个 cwd 参数来说明如何这一切都可以在一个电话中完成。

subprocess.run(
        ["C:\Program Files\Microsoft SQL Server\150\COM\snapshot.exe"
        "-Publisher", "[publisher]", "-PublisherDB", "[TEST]",
        "-Distributor", "[dist]", "-Publication", "[merge]",
        "-ReplicationType", "2", "-DistributorSecurityMode", "1"],
    # probably drop this
    cwd="C:\Program Files\Microsoft SQL Server\150\COM",
    # probably add this
    check=True)