在Windows Server 2012R2上,我该如何从任何目录的终端中执行特定的Python-script(D:/App/applic.py
),而又不会既没有唤起python
也没有.py
文件终止?在此服务器上,我希望所有用户能够键入:
applic 2017 -v
终端中的任何地方都可以唤起
python D:/Applic_dev/applic.py 2017 -v
我不是在寻找解决方案的py2exe-kind,因为python 3始终是服务器上的。
ps。我的python-script使用 plac
来解析命令行参数。
在受保护的位置(用户无法编辑)创建一个CMD文件
applic.cmd
@ECHO OFF
REM This will be wherever the python executable is
SET "PY=%PROGRAMFILES%Pythonx.xpython.exe"
REM This checks to see if the script is called without arguments
IF [%*] EQU [] (
@CALL %PY% "D:/App/applic.py"
EXIT /B
)
REM %* contains all arguments the script received
@CALL %PY% "D:/App/applic.py" %*
EXIT /B
从这里编辑您的路径环境变量,以包括该受保护位置的路径。
自动powershell方式
$ProtectedFolderLocation = 'C:WindowsSystem32Applic'
$RegKey = 'HKLM:SystemCurrentControlSetControlSession ManagerEnvironment'
$Path = (Get-ItemProperty -Path $RegKey).Path
If ($Path[-1] -ne ';') { $Path += ";$ProtectedFolderLocation;" }
Else { $Path += "$ProtectedFolderLocation;" }
Set-ItemProperty -Path $RegKey -Name 'PATH' -Value $Path
现在,当用户从cmd.exe
调用applic
时,他们将调用上面指定的脚本。