繁体   English   中英

为 python 脚本创建 BAT 文件

[英]Creating a BAT file for python script

如何创建一个简单的 BAT 文件来运行位于 C:\somescript.py 的 python 脚本?

c:\python27\python.exe c:\somescript.py %*

打开命令行( ⊞ Win + R , cmd , ↵ Enter )并输入python -V , ↵ Enter

您应该得到回复,类似于Python 2.7.1

如果没有,您可能没有安装 Python。 先解决这个问题。

一旦你有了 Python,你的批处理文件应该看起来像

@echo off
python c:\somescript.py %*
pause

这将在脚本完成后保持命令窗口打开,因此您可以看到任何错误或消息。 一旦您对它感到满意,您可以删除“暂停”行,完成后命令窗口将自动关闭。

以下是将批处理代码和 python 代码放在单个文件中的方法:

0<0# : ^
''' 
@echo off
echo batch code
python "%~f0" %*
exit /b 0
'''

print("python code")

'''分别开始和结束 python 多行注释。

0<0# : ^更有趣 - 由于批处理中的重定向优先级,批处理脚本将其解释为:0<0# ^ ,这是一个不会在屏幕上显示执行的标签。 末尾的插入符号将转义新行,第二行将附加到第一行。对于 python,它将是0<0语句和内联注释的开始。

归功于西伯利亚人

只需在 python 脚本的同一文件夹中打开一个包含这两行的批处理文件:

somescript.py
pause

如果您已将 Python 添加到您的 PATH 中,那么您也可以像这样简单地运行它。

python somescript.py

您可以直接在批处理文件中使用 python 代码, https://gist.github.com/jadient/9849314

@echo off & python -x "%~f0" %* & goto :eof
import sys
print("Hello World!")

请参阅说明, Python 命令行 -x 选项

--- xxx.bat ---

@echo off
set NAME1="Marc"
set NAME2="Travis"
py -u "CheckFile.py" %NAME1% %NAME2%
echo %ERRORLEVEL%
pause

--- yyy.py ---

import sys
import os
def names(f1,f2):

    print (f1)
    print (f2)
    res= True
    if f1 == "Travis":
         res= False
    return res

if __name__ == "__main__":
     a = sys.argv[1]
     b = sys.argv[2]
     c = names(a, b) 
     if c:
        sys.exit(1)
    else:
        sys.exit(0)        

这是语法:“python.exe 路径”“python 脚本路径”暂停

"C:\Users\hp\AppData\Local\Programs\Python\Python37\python.exe" "D:\TS_V1\TS_V2.py"
pause

基本上会发生什么,屏幕会出现几秒钟,然后关闭,请注意以下两件事:

  1. 在保存文件时,您将扩展名设为 bat 文件,但将其保存为 txt 文件,而不是所有文件和编码 ANSI
  2. 如果程序仍然不运行,请将批处理文件和 python 脚本保存在同一文件夹中,并在环境变量中指定该文件夹的路径。

如果这是与当前目录不同的目录中的 BAT 文件,您可能会看到类似“python: 无法打开文件 'somescript.py': [Errno 2] 没有这样的文件或目录”这样的错误。 这可以通过使用%~dp0 (该批处理文件驱动器号和路径)指定 BAT 文件的绝对路径来解决。

@echo off
python %~dp0\somescript.py %*

(这样你就可以忽略c:\\或其他什么,因为你可能想移动这个脚本)

与 npocmaka 的解决方案类似,如果您的批处理文件中除了 python 代码之外还有不止一行批处理代码,请查看: http : //lallouslab.net/2017/06/12/batchography-embedding-python-scripts -在你的批处理文件脚本/

@echo off
rem = """
echo some batch commands
echo another batch command
python -x "%~f0" %*
echo some more batch commands
goto :eof

"""
# Anything here is interpreted by Python
import platform
import sys
print("Hello world from Python %s!\n" % platform.python_version())
print("The passed arguments are: %s" % sys.argv[1:])

这段代码的作用是将所有批处理代码放入一个多行字符串中,将自己作为一个 python 文件运行。 该字符串的开头在一个名为 rem 的变量中,以使批处理代码将其作为注释读取。 由于-x参数,包含@echo off的第一行在 python 代码中被忽略。

值得一提的是,如果您想在批处理代码中使用\\ ,例如在文件路径中,则必须使用r"""..."""将其包围以将其用作原始字符串没有转义序列。

@echo off
rem = r"""
...
"""
ECHO OFF
set SCRIPT_DRIVE = %1
set SCRIPT_DIRECTORY = %2
%SCRIPT_DRIVE%
cd %SCRIPT_DRIVE%%SCRIPT_DIRECTORY%
python yourscript.py`

我这样做并有效:我在 D: 中有我的项目,我的批处理文件在桌面上,如果你有它在同一个驱动器中,只需忽略第一行并更改第二行中的 de D 目录

在第二行更改文件的文件夹,把你的文件夹

在第三行更改文件名

D: cd D:\\python_proyects\\example_folder\\ python example_file.py

使用任何文本编辑器并将以下代码另存为 runit.bat

@echo off
title Execute Python [NarendraDwivedi.Org]
:main
echo.
set/p filename=File Name :
echo. 
%filename%
goto main

创建一个空文件并将其命名为“run.bat”

就我而言,我使用“py”因为它更方便,请尝试:

C:
cd C:\Users\user\Downloads\python_script_path
py your_script.py
@echo off
call C:\Users\[user]\Anaconda3\condabin\conda activate base
"C:\Users\[user]\Anaconda3\python.exe" "C:\folder\[script].py"

开始 xxx.py

您可以将其用于其他一些文件类型。

暂无
暂无

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

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