如何在Windows中回显命令行输出

0 投票
1 回答
2353 浏览
提问于 2025-04-17 23:22

我正在尝试把下面的批处理文件转换成命令行的一行代码。我希望能在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"])

撰写回答