我的诉求是 断开远程桌面后 执行相应的批处理
已解决 使用https://github.com/zzzprojects/findandreplace进行xml文本替换
代码如下。大侠们帮看下。还有些啥能优化修改的么
xml代码
- <?xml version="1.0" encoding="UTF-16"?>
- <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
- <Triggers>
- <SessionStateChangeTrigger>
- <Enabled>true</Enabled>
- <StateChange>RemoteDisconnect</StateChange>
- </SessionStateChangeTrigger>
- </Triggers>
- <Principals>
- <Principal id="Author">
- <LogonType>Password</LogonType>
- <RunLevel>HighestAvailable</RunLevel>
- </Principal>
- </Principals>
- <Settings>
- <Priority>7</Priority>
- </Settings>
- <Actions Context="Author">
- <Exec>
- <Command>templatelist</Command>
- <Arguments>templatelog</Arguments>
- </Exec>
- </Actions>
- </Task>
复制代码
创建计划任务代码
- @ECHO OFF
- REM https://msdn.microsoft.com/zh-cn/library/windows/desktop/bb736357(v=vs.85).aspx
- PUSHD %~DP0
- >NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
- ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
- ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
- "%TEMP%\Getadmin.vbs"
- DEL /f /q "%TEMP%\Getadmin.vbs" 2>NUL
- Exit /b
- )
-
- ::创建计划任务
- ::任务名称,断开远程桌面后自动执行任务
- ::任务内容,执行当前目录下run.bat批处理
- ::提取配置文件到临时目录
- copy /y "%cd%\Bin\config\taskmodel.xml" "%cd%\Bin\Temp\taskmodel.xml"
- ::修改配置文件
- "%cd%\Bin\fnr\fnr.exe" --cl --dir "%cd%\Bin\Temp" --fileMask "*.xml" --find "templatelist" --replace "%~DP0run.bat"
- "%cd%\Bin\fnr\fnr.exe" --cl --dir "%cd%\Bin\Temp" --fileMask "*.xml" --find "templatelog" --replace "%~DP0run.log"
- cls
- ::删除旧的计划任务
- schtasks /delete /tn "断开远程桌面后自动执行任务" /f
- cls
- echo.
- echo.
- ::创建计划任务
- echo 当前Windows系统登录帐号(必须是管理员帐号)
- echo.
- echo.
- set /p loginname=系统登录帐号:
- echo.
- echo.
- schtasks /create /ru %loginname% /tn "断开远程桌面后自动执行任务" /xml "%cd%\Bin\Temp\taskmodel.xml"
- echo.
- ::清理临时文件
- del /f /q "%cd%\Bin\Temp\*.*"
- ECHO.&ECHO 创建完成,任意键关闭!&pause>nul &exit
复制代码
|