使用子进程 运行 具有多个参数的可执行文件
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)
命令行如下所示:
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)