如何将PATH参数从脚本传递到批处理文件?

时间:2019-11-02 15:34:19

标签: python windows batch-file

我有正在使用的Python脚本,从另一个目录中调用批处理文件时似乎无法解决此问题,这是我的脚本供参考

def makeFolder(folderName=""):
    try:
        os.mkdir(path + "/" + folderName)
    except OSError:
        print("Error creating folder.")


def p(string=""):
    os.system('cls')
    print(string)


path = os.getcwd().replace("/python", "")
name = input("What would you like the client to be called? ") + " 1.8.8"
mcp = "http://www.modcoderpack.com/files/mcp918.zip"
optifine = "http://download2265.mediafire.com/bdd5w08f1zcg/e878f5djmyuvnxm/Optifine.zip"
updatedDecompileFile = "https://pastebin.com/raw/Mwt03EEs"


def setup():
    makeFolder(name)

    p("Created folder '%s'." % name)

    zipPath = name + "/src.zip"

    p("Downloading MCP 1.8.8 from %s" % mcp)
    urllib.request.urlretrieve(mcp, zipPath)
    p("Finished Downloading MCP 1.8.8")

    p("Unzipping MCP 1.8.8")
    with zipfile.ZipFile(zipPath, 'r') as zip_ref:
        zip_ref.extractall(path + "/" + name)
    os.remove(zipPath)
    p("Unzipped MCP 1.8.8")

    mcpPath = path + "/" + name + "/"

    for file_name in listdir(mcpPath):
        if file_name.endswith(('.bat', '.sh')):
            os.remove(mcpPath + file_name)

    os.remove(mcpPath + "CHANGELOG")
    os.remove(mcpPath + "LICENSE.txt")

    urllib.request.urlretrieve(updatedDecompileFile, name + "/decompile.bat")

... this is where I would need to run the batch file ...

setup()

当前,由于存在运行批处理文件提示无法找到路径的问题,我让用户进入指定目录并在其中运行批处理文件。这是供参考的批处理文件:

@echo off
runtime\bin\python\python_mcp runtime\decompile.py
pause

此批处理脚本调用的Python文件要求路径为syspath\project\Client

但是,当从目录syspath\project中的Python脚本以编程方式调用批处理文件时,会引发错误。但是,当手动执行syspath\project\Client中的文件时,它可以按预期运行。

我认为答案是从上面显示的批处理文件传递到执行的Python脚本的path参数。因此,我是Python的新手,我能想到的唯一解决方法是“欺骗”路径,以便它告诉Python文件是在syspath\project\Client而非syspath\project中执行的。

如果您需要任何更多信息,请告诉我,而不会让我的帖子太冗长,我试图解决我的问题。

0 个答案:

没有答案