讓一個python源文件也能像bat批處理文件那樣運行[轉]


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

 

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

 

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

 

 

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

 

?
1
cd "%~dp0"

 

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

 

?
1
goto :eof

 

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

 

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

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

 

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

 

把輸出定向到空設備,並連接標准輸出和錯誤輸出(其實不連接而只重定向錯誤輸出也可以的)。最后的結果是這樣的:

 

 到此,基本實現了把python腳本當bat文件運行,而且還用python運行這個腳本!這樣就可以用一個文件來運行了!這個方法應該還可以舉一反三,可以試一下其他腳本了。除了一點小小的問題:不能隱藏命令的顯示,即在運行命令的時候會先顯示第一行命令,然后才執行。如果有網友有好的方法,歡迎推薦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM