0

いくつかの基本的な Windows コマンドの出力を一連のファイルに収集するスクリプトを作成しようとしていますが、vssadmin コマンドがイライラします。コマンドは比較的シンプル

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

問題は、私が python 32 ビットで書いていて、これが 64 ビット Windows で機能することを確認したいということです。これを実行すると、戻り値は次のとおりです。

vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンド ライン ツール (C) Copyright 2001-2005 Microsoft Corp.

エラー: ボリューム シャドウ コピー サービス コンポーネントで予期しないエラーが発生しました。詳細については、アプリケーション イベント ログを確認してください。

32 ビットの Python から 64 ビットのコマンド ラインを呼び出して、ビット深度検出機能を使用して呼び出すかどうかを決定できますか、それとも別のよりエレガントなソリューションがありますか?

フォローアップ:MBuを出発点として使用すると、次のコマンドでうまくいくことがわかりました。

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

2 に答える 2

0

Windows 2008 以降では、起動できますc:\Windows\Sysnative\vssadmin.exe。Windows 2003 ではホットフィックスが必要ですが、32 ビット アプリケーションから 64 ビット システム ファイルにアクセスするためのファイル システム ジャンクションを作成することもできます。詳細については、この質問に対する私の回答を参照してください。32 ビットの cmd.exe から 64 ビットの cmd.exe を起動することについてでしたが、ルールはすべてのアプリケーションで同じままです。

于 2013-08-16T19:00:47.450 に答える
0

C:\Windows\SysWOW64\vssadmin.exe常に 64 ビット バージョンを取得するには、明示的に起動します。

于 2013-08-15T15:11:35.413 に答える