家里有台电脑一直开着,想在办公室通过远程桌面对它进行控制。家里是用电信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

Published in Windows XP

No Responses to “Windows下定时向服务器发送自己的IP”

Leave a Reply

请输入算式结果(看不清请点击图片)
(必须)