澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

登录Windows界面前执行自定义脚本,Python编程案例

1.打开组策略,在Run(运行)中输入GREDIT.MSC,点击确认。

Windows中实现不依赖账户登录的开机启动程序,不依赖账

在Windows中很多的任务,我们希望能够在Windows 启动之后自动运行。举个例子,公司有个订饭系统,基本每天都需要登录去订饭,于是写一个脚本实现自动订饭。可是你的电脑每天要关机,当然不希望开机后还需要手动运行这个订饭脚本了。于是此时我们要将其这种脚本实现为开机自动启动脚本。
但要注意本文要讲的开机启动的程序,是在用户还没有登录的情况下实现启动的。换句话说,本文描述的开机启动的程序运行在Session 0中 主要介绍了3中方法, 大家可以选择合适的方法去实现。

引言

Python脚本既可以在ArcGIS运行环境外以独立脚本的形式来运行,也可以在ArcGIS运行环境内以脚本工具的形式来运行。两种方式都有各自的优缺点。到目前为止,所有的脚本都是在ArcGIS环境中以脚本工具形式或在Python开发环境IDLE以及ArcGIS内的Python窗口来执行。不过,Python脚本同样可以通过Windows操作系统命令行方式来执行。这种执行Python脚本的方式对于制定脚本执行任务计划来说是非常有用的。制定脚本执行任务计划有几个方面的原因,一是许多地理处理脚本的运行需要耗费很长时间通常都是安排在非工作时间来执行。另外,有一些脚本需要定时定期(每天,每周甚至每月)执行,有时候也是出于效率考虑。在本章中,你将学习如何通过命令行来执行Python脚本,将脚本添加到批处理文件中以及在指定时间来执行脚本。需要注意一点,由于代码中需要调用arcpy模块,所有通过的命令行来执行的脚本仍然需要获取ArcGIS桌面软件的许可。

 

Windows Service

当Windows 启动的时候,还没有登录账号的时候,此时Windows中设置为auto状态的Service 将会在Session 0中运行。可以按照如下步骤去实现Windows Service:

  1. 如果还没有实现过Windows Service 程序的同学,可以参考这篇文章《Simple Windows Service in C 》去实现。
  2. 通过命令行创建Service, 主要注意start= auto设置Service为开机启动。

    sc create “SERVICE_NAME” binpath= "SERVICE_PROGRAM" displayname= "SERVICE_DESCRIPTION" start= auto

  • 通过命令行执行Python脚本
  • 使用sys.argv[]捕获命令行输入参数
  • 将Python脚本添加到批处理文件
  • 创建任务计划

4.点击确认

Windows Schedule Task

Windows定时任务管理器,提供了强大的功能:可以定时的执行任务,除了按照时间去触发定时任务,其还提供了开机启动触发程序运行的功能,你可以通过图形界面的方式配置,也可以通过命令方式:

  • 依次打开Control Panel->Administrative Tools->Task Scheduler,然后再里面新建自己的任务。主要注意以下两点:
    • 任务运行的账号选成”System”
    • 触发器中,选择At Startup触发器
  • 使用如下命令行:
schtasks /create /TN "TASK_NAME" /RU SYSTEM /SC ONSTART /TR "TASK_PROGRAM"
How to do it...

按照以下步骤来创建一个批处理文件:
1.打开记事本(Notepad)。
2.添加以下文本:

cd /d C:ArcpyBookAppendix1
python ListFields.py C:ArcpyBookdata Burglaries_2009.shp

3.将文件保存为桌面上的ListFields.bat文件。确认选中保存文件类型
(Save as Type)
中的下拉列表中的所有文件(All Files),否则文本会保存为ListFields.bat.txt文件。
4.双击桌面中的ListFields.bat文件来执行命令代码。
5.在执行过程中会弹出一个命令提示符窗口。执行完成后,该窗口会自动关闭。

通常情况下,进入Windows界面之前都有一个登录过程,如何在登录前让系统执行脚本呢?下面介绍一种方法。

Windows Startup Script

按照如下步骤:

  1. 打开本地的组策略管理,运行命令gpedit
    2. 然后依次打开Computer Configuration->Windows Settings->Scripts-> Startup, 在Startup中配置需要开机启动的脚本或者程序。
    在机器中的配置,我们都尽可能的希望自动化,于是希望通过脚本来完成这个动作。可惜没有CMD 命令可以直接使用这种方法添加启动程序,后来博主搜索了一些方法,有通过直接修改注册表的、也有通过vb脚本去实现的,但这些方法个人觉得还不够直接,简单。
    于是博主找到了接下来要说的方法,通过Windows定时任务管理器。

通过命令行执行Python脚本

到目前为止,本书中所有的Python脚本要么在ArcGIS环境中以脚本工具形式执行,要么在Python开发环境中执行。Windows命令行为你提供了另外一种运行Python脚本的方式。命令提示窗口主要以批处理文件或任务计划的方式来执行脚本。

重启,在下次登录Windows界面前,系统会自动执行所添加的脚本。


图片 1

How it works...

sys模块中包含了一个argv[]的列表对象,该对象用于保存在命令行模式下执行Python脚本的输入参数。列表中的第一个元素是脚本名称。因此,在本案例中sys.argv[0]包含了ListFields.py文本。工作空间和要素类参数分别保存在sys.argv[1]sys.argv[2]中。这些输入参数赋值给变量在脚本中使用。

图片 2

Getting ready

Python中的sys.argv[]对象允许脚本在执行过程中接受命令行传递的输入参数。如下图所示的例子很好地说明了这一工作机制:

图片 3

每一个参数都用空格隔开。这些参数都保存在一个sys.argv[]的列表对象中。使用索引值0来引用sys.argv[]列表中的第一个元素,即脚本名称。在本案例中脚本名称为ListFields.py。依次使用递增的整数索引值来引用后续的元素。因此,第一个参数(C:ArcpyBookdata)保存在sys.argv[1]中,第二个参数(Burglaries.shp)保存在sys.argv[2]中。每一个sys.argv[]列表对象中的参数都可以在地理处理脚本中获取并使用。在本案例中,你需要修改ListFields.py脚本文件来接受命令行输入的参数。

3.在右侧双击Stratup,出现如图弹窗,可在此添加cmd或者PowerShell脚本。

创建任务计划

批处理文件创建完成后就可以在Windows任务计划程序中创建任务计划,在指定时间来自动执行处理任务。

本文由澳门皇冠金沙网站发布于网络操作,转载请注明出处:登录Windows界面前执行自定义脚本,Python编程案例