运行 来自 python 的 vssadmin
Running vssadmin from python
我正在尝试为自己编写一个简单的脚本来删除 Windows 还原点,我尝试使用 os
模块然后 os.system
但它说 vssadmin is not recognized
,还有,我试过用subprocess
然后communicate
和cmd
,但是我不能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')
您的代码有一些问题:
- 您正在使用
communicate
而不是 stdin.write
- 您写的是
'y'
而不是 'y\n'
- 您使用的是
vssadmin
而不是 c:\Windows\Sysnative\vssadmin.exe
(vssadmin 是 32 位应用程序,您可能使用的是 64 位 python)
- 用
stdin
通信估计无论如何也行不通,就用flag /quiet
以下代码可能会帮助您获得更好的结果:
import subprocess
subprocess.Popen([r'c:\Windows\Sysnative\vssadmin.exe', 'delete', 'shadows', '/all', '/quiet'])
我正在尝试为自己编写一个简单的脚本来删除 Windows 还原点,我尝试使用 os
模块然后 os.system
但它说 vssadmin is not recognized
,还有,我试过用subprocess
然后communicate
和cmd
,但是我不能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')
您的代码有一些问题:
- 您正在使用
communicate
而不是stdin.write
- 您写的是
'y'
而不是'y\n'
- 您使用的是
vssadmin
而不是c:\Windows\Sysnative\vssadmin.exe
(vssadmin 是 32 位应用程序,您可能使用的是 64 位 python) - 用
stdin
通信估计无论如何也行不通,就用flag/quiet
以下代码可能会帮助您获得更好的结果:
import subprocess
subprocess.Popen([r'c:\Windows\Sysnative\vssadmin.exe', 'delete', 'shadows', '/all', '/quiet'])