讓Python文件也能夠當bat文件運行

有沒有想過讓一個python源文件也能像bat批處理文件那樣運行?下面給你們演示一下一個小小的trick。python

# || cd "%~dp0" && python "%~0" && goto :eof
print "Hello, world!"

把上面的代碼保存成一個bat文件,暫且命名爲test.bat吧。先看一下運行結果:

 

下面這句是來到腳本的路徑之下。shell

cd "%~dp0"

而%~0是指當前腳本的名稱。code

goto :eof

則是直接跳到腳本的末尾。

上面的腳本巧用的是#字符和||。#在Python中是註釋字符,而||卻在批處理腳本中是或短路運算。class

不過上面還有一點小問題,會輸出說#不是一個可識別的命令。對於這個問題,能夠利用重定向的方法來屏蔽這個錯誤。最終的代碼就是這樣:test

# > nul 2>&1 || cd "%~dp0" && python "%~0" && goto :eof
print "Hello, world"

把輸出定向到空設備,並鏈接標準輸出和錯誤輸出(其實不鏈接而只重定向錯誤輸出也能夠的)。最後的結果是這樣的:

 到此,基本實現了把python腳本當bat文件運行,並且還用python運行這個腳本!這樣就能夠用一個文件來運行了!這個方法應該還能夠觸類旁通,能夠試一下其餘腳本了。除了一點小小的問題:不能隱藏命令的顯示,即在運行命令的時候會先顯示第一行命令,而後才執行。若是有網友有好的方法,歡迎推薦。方法

相關文章
相關標籤/搜索