为 win7 设置关机时执行脚本

起因:

由于 ABQ 的 license 存在一些问题,几年前遇到过 “只要开机自动启动 server 就导致软件无法打开” 的麻烦,后来就一直是手动打开的,但是问题又来了,有时候电脑个把月不关机,也记不清楚是不是已经启动过了 server,于是乎我就在 server 的 bat 里面写上了一句

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
call "C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ifortvars.bat" intel64 vs2013
@echo off
"C:\SIMULIA\Abaqus\6.13-4\code\bin\abq6134.exe" %*

rem Write info to file
set d=%date:~0,10%
set t=%time:~0,8%
echo %d% %t%>C:\Users\DELL\Desktop\DS\Server_has_been_started.o

rem 之后的都是我写上去的,一旦启动了server,就生成一个文件 Server_has_been_started.o,内容是启动时间。这样我就知道是否已经启动了server (并且还有一个不会去关心的问题:何时启动了 server)

问题总是一堆又一堆,这个文件最好还是每次关机时候自动删除吧,那么如何实现自动删除呢?

我想到的是再写一个 bat,删除指定文件

echo off
set cFileName="Server_has_been_started.o"
if exist %cFileName% del %cFileName%

现在的任务很清楚了:如何在关机时候自动执行这个脚本?

使用 组策略: gpedit.msc

注意不要使用 “任务计划程序”, 这个是没有关机动作的。

为 win7 设置关机时执行脚本_第1张图片
组策略编辑——关机脚本
为 win7 设置关机时执行脚本_第2张图片
任务计划

然而现实是上面这个关机脚本并不会执行,改成这样子的才可以

echo off
set cFileName="C:\Users\DELL\Desktop\DS\Server_has_been_started.o"
if exist %cFileName% del %cFileName%

也就是说说必须要带上路径才可以,如果不带路径的话,仅仅是我们主动运行的时候可以执行。这个我目前不清楚为什么,有懂得麻烦告诉我,谢谢。

问题解决,感谢 Fcode 群水神

自动运行时候的“当前目录”不是 .o文件所在的目录

你可能感兴趣的:(为 win7 设置关机时执行脚本)