九溪

溪水润知林,滴露启慧心

用户工具

站点工具


pages:home

ColinOL Home

如何实现启动程序A的时候执行相应的计划任务?

想实现在启动程序A的时候,自动执行计划任务,首先肯定的是可以使用Windows 任务计划程序,但是任务计划程序的事件有一定限制,事件查看器中存在的事件才可以。因此,需要首先开启相关日志记录,然后再通过事件形式,添加监视启动程序A的计划任务。

开启相关日志记录

右键点击开始按钮>运行>secpol.msc

在打开的本地安全策略中依次展开本地策略>审核策略>双击打开右侧的“审核进程跟踪”,勾选“审核这些操作”下方的“成功”>确定

打开审核进程跟踪

设置完成后可以随便打开一个应用程序再关闭,然后右键点击开始按钮>事件查看器>Windows日志>安全>可以看到最新一条的事件记录(4688)可以成功记录到刚才启动的程序的事件.

启动程序安全事件

设定任务计划程序

接下来回到任务计划程序中,修改计划任务的触发器,使用“发生事件时”触发>自定义>新建事件筛选器,切换至“XML”标签页,勾选“手动编辑查询”,粘贴下面内容:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
        *[System[band(Keywords,9007199254740992) and (EventID=4688)]] 
        and 
        *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Program Portable\TotalCMD64\Totalcmd64.exe')]]
    </Select>
  </Query>
</QueryList>

注:请将上面代码中 @Name='NewProcessName' and Data=''中的路径内容替换为程序A的完整路径

编辑任务计划事件筛选器

然后再继续配置“创建任务”窗口中的“操作”内容.

注意,使用笔记本创建任务计划,请确认是否勾选“只有在计算机使用交流电源时才启动该任务”。

参考

2020/05/13 11:03 · colin

Total Commander

TotalCommander 程序参数设置文件:

TCM程序目录\Wincmd.ini

点击关闭最小化窗口

关闭按钮最小化(而不是直接关闭),加shift为强制退出。修改 Wincmd.ini 文件内容,如下

[Configuration]
  ;0:点X关闭程序,1:点X最小化
  MinimizeOnClose=1

使用AutoHotKey实现启动免点击

参考 AutoHotKey

2020/05/13 09:47 · colin

批量处理裁剪矢量数据 (ArcPy+Clip)

需求

本示例要解决什么问题?

有河北省东北部矢量数据,包含53个图层,例如城市名、立交桥、功率、水系、县乡道等,需要将北戴河行政区划内所有的相关图层数据都提取出来,生成53个新的图层,文件名称保持一致,只包含北戴河数据。

待处理shp

思路

ArcGIS 可以通过 ArcToolbox - Analysis Tools - Extract - Clip 实现对矢量数据的裁剪功能。但是一次只能处理生成一个文件。

ArcGIS-Clip

但该功能显然不适用于本示例,每次只能处理一个,要累死人。

使用 ArcPy (Python in ArcGIS) 编写脚本,即可批处理运行。

ArcPy入口

  1. 【开始菜单】-【ArcGIS】-【Python (command line)】
  2. C:\Python27\ArcGIS10.2\python.exe (与实际安装路径相关)

ArcPy官方

一、创建裁剪基准图层

单独编辑县界图层,只保留北戴河,保存为 北戴河.shp

具体方法就不说了。

二、创建 ArcPy 脚本

ArcPy 进行Clip处理,主要代码如下

arcpy.Clip_analysis("clipfrom.shp","base.shp","C:/clipto.shp")

本次使用python遍历工程文件夹,将所有shp进行clip处理,所需代码如下

clippatch.py.txt
#conding=utf8  
 
import sys
reload(sys)
sys.setdefaultencoding('utf8')
 
import os 
 
import arcpy
 
from arcpy import env
 
path_in="C:/home/00-library/download/SHP"
path_out="C:/home/00-library/download/SHP_for"
path_clipfile="北戴河.shp"
 
env.workspace = path_in
g = os.walk(path_in) 
num=0
for path,dir_list,file_list in g:  
    for file_name in file_list:  
        if os.path.splitext(file_name)[-1]=='.shp' and file_name!=path_clipfile:
            num=num+1
            shpfileto=path_out+“/”+file_name
            print 'Clipping', file_name
            try:   
                #print 'test', shpfileto
                arcpy.Clip_analysis(file_name.decode("gb2312"),path_clipfile.decode("gb2312"),shpfileto.decode("gb2312"))
            except:
                print '-----error-----', num, '----------------------'
                #print '********* Sth is happened, but still go on.'
            print '-----over-----', num, '----------------------'

三、运行脚本

打开 ArcGIS Python (command line),将代码粘贴进去,回车即可运行

运行成功后,处理的成果如下:

可能遇到的问题

1. 使用“裁剪(clip)”工具出现了“000117 警告: 生成的输出为空”拓扑无效 [空多边形不完整] 原因和解决办法:

(1)拓扑无效 [空多边形不完整]错误:

  • 原因:两个图册的空间坐标系不同
  • 解决:“Data Management Tools”-“投影与变换”-“要素”-“投影”工具,统一图层的坐标系

(2)000117错误:

  • 原因:失量图层有问题
  • 解决:“Data Management Tools”-“要素”-“修复几何”工具先修复,再裁剪

2. Python 处理文件中文路径问题

2020/05/11 17:31 · colin

评论

请输入您的评论. 可以使用维基语法:
 
pages/home.txt · 最后更改: 2023/01/03 15:08 由 127.0.0.1