繁体   English   中英

在Python脚本中运行批处理文件时出现Windows错误2

[英]Windows Error 2 when running batch file in Python script

我看到了几个专用于此错误的线程,但没有一个解决了我的问题。 以为我会发布,以便人们可以查看我的代码,也许我们可以为每个人找出另一个解决方案。

我正在尝试运行Python脚本,其首要任务是运行批处理文件。 批处理文件实际上运行Wget来下载Python脚本将使用的文件。

如果我手动运行整个Python脚本,则可以完美运行。 但是,如果我使用Windows Task Scheduler或从命令行运行它,则批处理脚本有问题。

如果我批处理脚本部分,Task Scheduler / CMD可以很好地运行Python脚本。 Task Scheduler / CMD也可以独立运行批处理文件,没有问题。

这是我的Python代码:

import time
import os
import sys
from subprocess import Popen
import zipfile
import win32com.client as win32

#1# Run the downloader batch file
p = Popen("NDICDownloader.bat", cwd=r"C:\NDICUpdate")
stdout, stderr = p.communicate()
p.wait()

这是我在命令行中遇到的错误:

c:\Python27\python.exe c:\NDICUpdate\NDICUpdater.py
Traceback (most recent call last):
  file "c:\NDICUpdate\NDICUpdater.py", line 9, in (module)
    p = Popen("NDICDownloader.bat", cwd=r"C:\NDICUpdate")
  file "c:\Python27\lib\subprocess.py", line 672, in __init__
    errread, errwrite)
  file "c:\Python27\lib\subprocess.py", line 882, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

这是批处理文件:

cd C:\NDICUpdate\NDIC

wget --arguments include sensitive info--

批处理文件使用Wget将文件下载到NDIC文件夹。 所有脚本都位于根文件夹C:\\ NDICUpdate中。 所有文件都存在。

问题是试图使用Windows在Python脚本中运行批处理文件。 为什么Windows和Python碰到头了?

(已在注释中回答。请参阅无答案的问题,但问题已在注释中解决(或在聊天中扩展)

@MC ND写道:

更改您的代码以使用/c NDICUpdate.bat作为可执行文件的参数来调用cmd.exe作为启动过程:

p = Popen(["cmd.exe", "/c NDICDownloader.bat"], cwd=r"C:\\NDICUpdate")

OP写道:

起作用了。 这也适用: os.system("c:\\windows\\system32\\cmd.exe /c C:\\NDICDownloader.bat") 我最终要做的是编写一个批处理文件,该文件运行Wget ,然后运行Python。 很多头痛/浪费时间,但至少是一个可行的解决方案。 仍然不知道如何获取cmd.exe来运行Python的子进程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM