簡體   English   中英

在Windows批處理腳本里面執行多行python代碼

[英]Execute multi-line python code inside Windows Batch script

我想在 Windows 批處理腳本中使用多行 python 語句。

比如我的BAT腳本是:

@echo off
echo "Executing Python Code..."
goto python_code

:python_code_back
echo "Executed Python Code!"

pause
exit()

:python_code
python -c print("""Python code running""")
goto python_code_back

python -c適用於單個語句。 但是讓我的 python 代碼嵌入是:

import random
num = input("Enter Number: ")
num = int(num)
if num%2 == 0:
  print("Even")
else:
  print("Odd")
  
exit()

如何在不調用另一個 python 腳本或創建臨時 python 文件的情況下將此Python 代碼嵌入到我的Windows 批處理腳本中?

我有一些選擇:

  1. python -c與分號一起使用:我如何設計上面的 if 語句之類的代碼? 如果有辦法,人們可能仍然需要多行的干凈代碼,但我很感激這個答案。

  2. 我可以只運行python並找到一種向解釋器發送命令的方法嗎? 也許使用子流程?

  3. 有什么辦法可以構建一個包含 python 代碼的多行字符串,然后將其發送到 python 解釋器或 python 命令?

  4. 在 bash 中,我們可以使用 EOF 來保持多行清潔。 BAT中有類似的方法嗎? 我認為不會,因為人們對此提出了許多解決方法

  5. 可以使用 Batch 專門解釋的''' (三個單引號)或""" (三個雙引號)語法嗎?就像這里一樣?

試試這樣:

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

import random
import sys



def isOdd():
    print("python code")
    num = input("Enter Number: ")
    num = int(num)
    if num%2 == 0:
      print("Even")
    else:
      print("Odd")

def printScriptName():
    print(sys.modules['__main__'].__file__)
    
eval(sys.argv[1] + '()')
exit()

用法示例:

call pythonEmbeddedInBatch.bat isOdd
call pythonEmbeddedInBatch.bat printScriptName

第一行將是python中的boolean表達式,但是批量重定向到一個空的label。 批號rest會在多行python注釋中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM