为python脚本创建BAT文件

时间:2010-12-31 16:51:46

标签: python batch-file

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

13 个答案:

答案 0 :(得分:58)

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

答案 1 :(得分:41)

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

您应该收到回复,例如Python 2.7.1

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

拥有Python后,您的批处理文件应该看起来像

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

这将在脚本完成后保持命令窗口打开,这样您就可以看到任何错误或消息。一旦你对它感到满意,你可以删除'pause'行,命令窗口将在完成时自动关闭。

答案 2 :(得分:11)

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

somescript.py
pause

答案 3 :(得分:8)

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

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

print("python code")

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

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

信用额转到siberia-man

答案 4 :(得分:5)

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

python somescript.py

答案 5 :(得分:3)

--- 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)        

答案 6 :(得分:2)

这是语法: “ 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脚本保存在同一文件夹中,然后在“环境变量”中指定此文件夹的路径。

答案 7 :(得分:1)

如果这是与当前目录不同目录中的BAT文件,则您可能会看到类似“ python:无法打开文件'somescript.py':[错误2]没有此类文件或目录”的错误。可以通过使用%~dp0drive letter and path of that batch file)指定BAT文件的绝对路径来解决此问题。

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

(通过这种方式,您可以忽略c:\或其他任何内容,因为也许您可能希望移动此脚本)

答案 8 :(得分:1)

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

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

请参见说明,Python command line -x option

答案 9 :(得分:0)

开始xxx.py

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

答案 10 :(得分:0)

ECHO OFF
set SCRIPT_DRIVE = %1
set SCRIPT_DIRECTORY = %2
%SCRIPT_DRIVE%
cd %SCRIPT_DRIVE%%SCRIPT_DIRECTORY%
python yourscript.py`

答案 11 :(得分:0)

我做到了并工作: 我的项目在D中:我的批处理文件在桌面上,如果您将其放在同一驱动器中,则忽略第一行,然后在第二行中更改de D目录

在第二行中更改文件的文件夹,放入文件夹

在第三行中更改文件名

0

答案 12 :(得分:0)

类似于npocmaka的解决方案,如果您的批处理文件中除了python代码外还有多行批处理代码,请查看以下内容:http://lallouslab.net/2017/06/12/batchography-embedding-python-scripts-in-your-batch-file-script/

@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的变量中,以使批处理代码将其作为注释读取。由于@echo off参数,在python代码中会忽略包含-x的第一行。

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

@echo off
rem = r"""
...
"""