让一个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运行这个脚本!这样就可以用一个文件来运行了!这个方法应该还可以举一反三,可以试一下其他脚本了。除了一点小小的问题:不能隐藏命令的显示,即在运行命令的时候会先显示第一行命令,然后才执行。如果有网友有好的方法,欢迎推荐。

posted @ 2015-01-07 16:23  小侠女  阅读(3384)  评论(0编辑  收藏  举报