使用Python+WMI将本地变量写入远程Windows Server的TXT文件遇异常
问题原因
你遇到的问题是因为CMD在解析整个命令行时,会先对%x%做即时变量扩展,这时候set x={x}还没执行,所以%x%没有被替换成实际值。
解决办法
方法一:直接嵌入本地变量值(推荐)
不需要在远程CMD里设置变量,直接把Python中x的值通过f-string嵌入到命令中,绕开CMD的变量扩展问题:
import wmi x = 28 c = wmi.WMI(ip, user=username, password=password) process_id, return_value = c.Win32_Process.Create(CommandLine=f"cmd.exe /c echo {x} > c:/1.txt")
方法二:开启CMD延迟扩展
通过/v:on开启CMD的延迟扩展功能,用!x!替代%x%,让变量在命令执行阶段才被解析:
import wmi x = 28 c = wmi.WMI(ip, user=username, password=password) process_id, return_value = c.Win32_Process.Create(CommandLine=f"cmd.exe /v:on /c set x={x} & echo !x! > c:/1.txt")
内容的提问来源于stack exchange,提问作者jobberman
相关产品推荐
相关产品推荐

