从32位python调用64位控制台

时间:2013-08-15 14:57:22

标签: python cmd 32bit-64bit os.system

我正在尝试编写一个脚本,将一些基本Windows命令的输出收集到一组文件中,并且发现我的vssadmin命令令人沮丧。该命令相对简单

os.system('vssadmin list writers>> x:\foo\vss.txt')

问题是我正在用32位python编写,并希望确保它能在64位Windows上运行。执行此操作时,返回值为:

  

vssadmin 1.1 - 卷影复制服务管理命令行   工具(C)版权所有2001-2005 Microsoft Corp.

     

错误:卷影复制服务组件遇到了   意外的错误。检查应用程序事件日志以获取更多信   信息。

我可以从32位python调用64位命令行并决定是否使用位深度检测功能调用它,还是有另一种更优雅的解决方案?

后续行动:使用MBu作为起点我发现以下命令可以解决问题:

os.system('%systemroot%\\sysnative\\cmd.exe /c vssadmin list writers > x:\\foo\\vss.txt')

2 个答案:

答案 0 :(得分:0)

明确启动C:\Windows\SysWOW64\vssadmin.exe以始终获得64位版本。

答案 1 :(得分:0)

在Windows 2008或更新版本下,您可以启动c:\Windows\Sysnative\vssadmin.exe。在Windows 2003下需要一个修补程序,但您也可以创建一个文件系统联结以从32位应用程序访问64位系统文件。有关详细信息,请参阅我对this question的回答。虽然它是关于从32位cmd.exe启动64位cmd.exe,但所有应用程序的规则保持不变。