运行 来自 python 的 vssadmin

Running vssadmin from python

我正在尝试为自己编写一个简单的脚本来删除 Windows 还原点,我尝试使用 os 模块然后 os.system 但它说 vssadmin is not recognized,还有,我试过用subprocess然后communicatecmd,但是我不能communicate两次,我不知道为什么.

有没有办法 运行 将 Python 中的以下脚本输入到 cmd 中?

它会删除所有删除系统还原点的所有影子,然后问我是否要这样做。

vssadmin delete shadows /all
y

第一个例子:

它会抛出一个错误,因为我正在尝试与命令提示符通信两次。

import subprocess

proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE)
proc.communicate('vssadmin delete shadows /all'.encode())
proc.communicate('y'.encode())

第二个例子:

它不会识别我的代码。

import os

os.system('vssadmin delete shadows /all')
os.system('y')

您的代码有一些问题:

  1. 您正在使用 communicate 而不是 stdin.write
  2. 您写的是 'y' 而不是 'y\n'
  3. 您使用的是 vssadmin 而不是 c:\Windows\Sysnative\vssadmin.exe(vssadmin 是 32 位应用程序,您可能使用的是 64 位 python)
  4. stdin通信估计无论如何也行不通,就用flag /quiet

以下代码可能会帮助您获得更好的结果:

import subprocess
subprocess.Popen([r'c:\Windows\Sysnative\vssadmin.exe', 'delete', 'shadows', '/all', '/quiet'])