家里有台电脑一直开着,想在办公室通过远程桌面对它进行控制。家里是用电信ADSL上网的,IP不固定,所以要做一个定时向服务器发送自己的IP。windows自带的计划任务只能精确到每天执行,我想要的是十分钟执行一次,所以要写个批处理:
:a ping 127.0.0.1 -n 600 -w 1000 > nul @taskkill /f /im "IExplore.exe" start iexplore.exe http://www.yuexuan.org/sendip.php?pc=dell goto :a
以上批处理的作用是每隔10分钟关闭所有的IE,然后新开一个IE打开指定的网页。
sendip.php是记录IP到文本文件中的,代码如下:
<?php if (isset($_GET['pc']) && !empty($_GET['pc'])){ $ip = GetIP(); $pc = str_replace('.', '', $_GET['pc']); $file = 'sendip/'.$pc.'.txt'; if (file_exists($file)){ $oldContent = file_get_contents($file); }else{ $oldContent = ''; } file_put_contents($file, $oldContent.date('Y-m-d H:i:s').' '.$ip."\r\n"); } function GetIP(){//获取用户IP if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"]; else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"]; else $cip = "无法获取!"; return $cip; }
在Unix环境下,命令行或者shell中sleep和kill是常见的动作,在Windows的.bat文件中处理类似的任务就不那么直接了,备忘如下:
[sleep] ping 127.0.0.1 -n 需要的秒数+1 -w 1000 > nul [kill] taskkill /f /im "进程名(如notepad.exe)" taskkill /f /fi "WINDOWTITLE eq notepad*"
其中/f表示强制,/im表示image镜像名(可执行文件名),/fi表示filter,后面跟表达式,比如这里的”窗体标题等于notepad*”,支持wildcast通配符。
http://readsean.javaeye.com/blog/320508