Python 如何在Windows上回显命令行输出
我试图在命令行oneliner上复制以下批处理文件。我希望能够在python脚本中使用此客户端,并确定是否建立了连接,我需要能够检索错误代码。我正在通过子流程调用应用程序。如有任何帮助,将不胜感激 批处理文件代码Python 如何在Windows上回显命令行输出,python,windows,batch-file,command-line,Python,Windows,Batch File,Command Line,我试图在命令行oneliner上复制以下批处理文件。我希望能够在python脚本中使用此客户端,并确定是否建立了连接,我需要能够检索错误代码。我正在通过子流程调用应用程序。如有任何帮助,将不胜感激 批处理文件代码 ECHO OFF START /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch ECHO %ERRORLEVEL% c:\Python27>start /WAIT rdp.exe /v:192.168.1.12
ECHO OFF
START /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch
ECHO %ERRORLEVEL%
c:\Python27>start /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /log /batch | ECHO %ERRORLEVEL%
c:\Python27>start rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch || ECHO %ERRORLEVEL%
try:
cmdrdp = "rdp.exe /v:%s /u:%s /p:%s /log /batch" % (server, username, password)
subprocess.check_output(cmdrdp)
except CalledProcessError as e:
print(e.returncode)
else:
print "Connected to: %s %s %s" % (server, username, password)
我已经尝试了下面的命令以及许多变化,但无法得到预期的结果。可以找到有关可执行文件的信息
示例
ECHO OFF
START /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch
ECHO %ERRORLEVEL%
c:\Python27>start /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /log /batch | ECHO %ERRORLEVEL%
c:\Python27>start rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch || ECHO %ERRORLEVEL%
try:
cmdrdp = "rdp.exe /v:%s /u:%s /p:%s /log /batch" % (server, username, password)
subprocess.check_output(cmdrdp)
except CalledProcessError as e:
print(e.returncode)
else:
print "Connected to: %s %s %s" % (server, username, password)
PYTHON代码片段
ECHO OFF
START /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch
ECHO %ERRORLEVEL%
c:\Python27>start /WAIT rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /log /batch | ECHO %ERRORLEVEL%
c:\Python27>start rdp.exe /v:192.168.1.122 /u:xpuser /p:xpuser /batch || ECHO %ERRORLEVEL%
try:
cmdrdp = "rdp.exe /v:%s /u:%s /p:%s /log /batch" % (server, username, password)
subprocess.check_output(cmdrdp)
except CalledProcessError as e:
print(e.returncode)
else:
print "Connected to: %s %s %s" % (server, username, password)
如果将单个字符串传递给
子流程。请检查\u output
,它将被解释为文本文件名,如果要使其工作,则需要传递shell=True
参数
但是,建议使用子流程
函数系列的方法是使用字符串列表作为参数:
subprocess.check_output(["rdp.exe", "/v:" + server, "/u:" + username, "/p:" + password, "/log", "/batch"])