如何在Windows中回显命令行输出
我正在尝试把下面的批处理文件转换成命令行的一行代码。我希望能在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%
Python代码片段
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)
1 个回答
1
如果你把一个字符串传给 subprocess.check_output
,它会被当作一个文件名来处理。如果你想让它正常工作,就需要加上 shell=True
这个参数。
不过,使用 subprocess
相关的函数时,推荐的做法是把参数用字符串列表的形式传入:
subprocess.check_output(["rdp.exe", "/v:" + server, "/u:" + username, "/p:" + password, "/log", "/batch"])