有沒有想過讓一個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運行這個腳本!這樣就可以用一個文件來運行了!這個方法應該還可以舉一反三,可以試一下其他腳本了。除了一點小小的問題:不能隱藏命令的顯示,即在運行命令的時候會先顯示第一行命令,然后才執行。如果有網友有好的方法,歡迎推薦。