我正在尝试为自己编写一个简单的脚本来删除 Windows 还原点,我尝试使用 os
模块,然后使用 os.system
但它说 vssadmin 无法识别
,另外,我尝试使用 subprocess
,然后与 cmd
进行通信
,但是我无法沟通
两次,我不知道为什么。
有没有办法在 cmd 中运行 Python 中的以下脚本?
它将删除所有系统还原点的所有阴影,然后询问我是否要执行此操作。
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
进行通信可能无论如何都不起作用,只需使用标志/quiet
以下代码可能会帮助您获得更好的结果:
import subprocess
subprocess.Popen([r'c:\Windows\Sysnative\vssadmin.exe', 'delete', 'shadows', '/all', '/quiet'])
关于python - 从 python 运行 vssadmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60237722/