Python 3.x 如何通过python脚本在cmd中运行cd命令?

Python 3.x 如何通过python脚本在cmd中运行cd命令?,python-3.x,cmd,subprocess,wmic,cd,Python 3.x,Cmd,Subprocess,Wmic,Cd,我正在写一个脚本,需要获得主板序列号(在Windows上)通过 在cmd中,这意味着我必须在python中使用以下命令: sr = subprocess.check_output('wmic baseboard get serialnumber') 但是,由于目标PC cmd的当前目录可能与包含要执行的wmic.exe的目录不同,因此首先我必须将cmd目录更改为 C:\Windows\SysWOW64\wbem 由cmd中的以下命令执行: cd C:\Windows\SysWOW64\wbem

我正在写一个脚本,需要获得主板序列号(在Windows上)通过

在cmd中,这意味着我必须在python中使用以下命令:

sr = subprocess.check_output('wmic baseboard get serialnumber')
但是,由于目标PC cmd的当前目录可能与包含要执行的wmic.exe的目录不同,因此首先我必须将cmd目录更改为

C:\Windows\SysWOW64\wbem

由cmd中的以下命令执行:

cd C:\Windows\SysWOW64\wbem

但是,如何通过python脚本运行late cmd命令?

这是用于打开具有特定目录的命令提示符

导入操作系统
os.system(“start cmd/K cd C:\Users\Desktop\folder\file”)

您可以使用
cwd
参数:

p = subprocess.Popen([command, argument1,...], cwd='C:\Windows\SysWOW64\wbem')
如果cwd不是None,则子目录的当前目录将更改为 在执行之前执行cwd。请注意,不考虑此目录 搜索可执行文件时,无法指定程序的路径 相对于cwd

这些可能会有帮助:

检查此项

from os import system
system('cd <your destination>')
从操作系统导入系统
系统('cd')
还是这个

from os import chdir
chdir('<your destination>')
从操作系统导入chdir
chdir(“”)
Delthis=chdir(“”)
del Delthis#删除该零

为什么要这样做?为什么不直接调用该进程?@Nico Haase,因为它会导致以下错误:“wmic无法识别为内部或外部命令、可操作程序或批处理文件”。这是因为当前目录可能与包含要执行的文件的目录不同。运行进程无需将可执行文件的目录设置为当前目录,即可运行可执行文件。Microsoft的wimc.exe所属的良好编码可执行文件可以使用完全限定的文件名从任何目录执行,这意味着运行具有驱动器+路径+文件名+文件扩展名的可执行文件,该文件扩展名为
%SystemRoot%\System32\wbem\wmic.exe
,正如我今天在前面的问题上所写的那样
%SystemRoot%
引用预定义的Windows环境变量
SystemRoot
的值,该变量包含指向Windows目录的路径。因此,您可以将Python脚本写入
SystemRoot
,将此文件夹路径字符串与
\System32\wbem\wmic.exe
连接,并使用此连接的完整限定文件名从Python脚本中运行
wmic.exe
。请注意,
wmic.exe
输出的数据总是UTF-16 Little Endian编码的,在从Python脚本中捕获此输出时必须考虑到这一点。@Mofi问题是sr=subprocess。check_output('wmic baseboard get serialnumber')在另一台pc上的Python shell中执行,但在这台pc上不执行!!!我在sr=subprocess之前使用过它。按照您的建议,在我的脚本中检查_output('wmic baseboard get serialnumber'),它只会打开所需目录中的cmd窗口,等待命令,而subprocess命令不会在python中执行!p=subprocess.Popen('wmic baseboard get serialnumber',cwd='C:\Windows\SysWOW64\wbem')或bbText=str(subprocess.check_output('wmic baseboard get serialnumber',cwd='C:\Windows\SysWOW64\wbem')?您的应该是这样的:
p=subprocess.Popen(['wmic baseboard get serialnumber',cwd C:\Windows\SysWOW64\wbem'))
不幸的是,我遇到了这个错误:FileNotFoundError:[WinError 2]系统找不到指定的文件上次尝试:
p=subprocess.Popen(['ls',cwd=r'C:\Windows\SysWOW64\wbem')
添加
r
是防止Python将``解释为转义序列的另一种方法。否则,”\_(ツ)_/’此外,如果您厌倦了零的纠缠,请删除该零
from os import chdir
chdir('<your destination>')
Delthis = chdir('<your destination>')
del Delthis #delete that zero