如何创建一个简单的BAT文件来运行位于C:\ somescript.py的python脚本?
答案 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
基本上会发生什么,屏幕会出现几秒钟,然后熄灭,请注意以下两点:
答案 7 :(得分:1)
如果这是与当前目录不同目录中的BAT文件,则您可能会看到类似“ python:无法打开文件'somescript.py':[错误2]没有此类文件或目录”的错误。可以通过使用%~dp0
(drive 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!")
答案 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"""
...
"""