[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 求助,如何给写好的bat加有效期验证

想给写好的bat加个有效期远程验证,就是运行需要先验证是否在有效期内,在有效期内就继续运行,过期就提示过期不再继续执行。谁有好的方案,可付费。
利用txt文本截取字段和本地时间做比对这个方法试过了,但是容易出现问题。
不知还有没有其他的方法。

回复 2# Batcher


    没有代码,我是想找大神给写个,我写的那个利用txt那个不好用

TOP

本帖最后由 sditwzh 于 2022-10-17 17:25 编辑

回复 4# Batcher


@echo off

@mode con lines=28 cols=60

echo.

echo 正在验证软件授权信息,请稍候!

ping 127.1 -n 2 >nul

echo.
rem 截取第x行内容
set line=1
set "url=http://10.214.195.222/date.txt"
(echo;var http=new ActiveXObject^('Msxml2.XMLHTTP'^);
echo;http.open^('GET', "%url%", false^);
echo;http.send^(^);
echo;WSH.echo^(http.ResponseText^);
)>"%tmp%\j.j"
for /f "tokens=1* delims=:" %%a in ('cscript -nologo -e:jscript "%tmp%\j.j"^|findstr /n .*') do (
    if %%a equ %line% set name=%%b
)

set "name=%name:~0,6%"
echo;授权单位:%name%

echo.
rem 截取第x行第n个字符之后内容
set line=1
set index=14
set "url=http://10.214.195.222/date.txt"
(echo;var http=new ActiveXObject^('Msxml2.XMLHTTP'^);
echo;http.open^('GET', "%url%", false^);
echo;http.send^(^);
echo;WSH.echo^(http.ResponseText^);
)>"%tmp%\j.j"
for /f "tokens=1* delims=:" %%a in ('cscript -nologo -e:jscript "%tmp%\j.j"^|findstr /n .*') do (
    if %%a equ %line% set serverdate=%%b
)
call set "serverdate=%%serverdate:~%index%%%"
>"%tmp%\v.v" echo;WSH.echo Year(date) ^& right("0" ^& Month(date),2) ^& right("0" ^& Day(date),2)
for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\v.v"') do set localdate=%%a
if "%serverdate%" leq "%localdate%" (
echo;您的授权已过期。
echo.
echo 请您在授权期内使用&goto :end)

echo 您的授权在有效期内可以正常使用。

ping 127.1 -n 3 >nul

echo.

echo 正在启动

echo.

start  D:\dev_tool\nginx-1.9.9\nginx.exe

ping 127.1 -n 5 >nul
exit
:end
echo.
pause
exit


这个方法有时候出现第一次可以读取txt信息,但是后面就算把txt信息改了,再次运行还是能执行,无论怎么改读取到的信息都是第一次的,所以想看看又没有别的方式,或者建立一个mdb数据库从数据库读取。再或者有其他方法。还有能不能利用读取文件名称的方式来实现,例如123文件夹下有1个文件夹一个txt,文件夹名称是客户名称,txt文件名是对应的授权日期。这样再取这个txt文件名和电脑时间做对比。

TOP

回复 4# Batcher


    请大神看看给个好的解决方案。可以付费

TOP

回复 8# hlzj88


    不过问题是给客户执行的bat是固定死的,我这边要能控制期限,我看了下你的代码,那是和网络时间进行比对,这个比对内容我没有办法控制,就这么说吧,目的是客户的bat是写好的,我这边可以通过修改一些东西来控制这个bat来使用。通过网络校对是必须的,但是我没有好的方案,只想到这个利用txt文本。

TOP

回复 11# Batcher


    我给客户的不是bat源文件,我是转换到exe格式的

TOP

本帖最后由 sditwzh 于 2022-10-17 17:22 编辑

回复 10# holley


    你的意思是利用文件修改时间和当前时间做对比?那也不行,我还有一段代码是用来读取名称呢,就是说先是读取名称,读取到后再去验证时间是否到期。

TOP

回复 14# hlzj88


    我现在就是用的你说的这种读取txt里面的时间来控制,但是不稳定,你看我上面的描述,有时候你就算改了txt内容,bat显示的还是修改前的。不知道什么情况

TOP

回复 16# holley


    你这个是可以不过不是我说的那个思路,本地电脑时间是固定的,但是云端的时间是可变的。

TOP

回复 19# hlzj88


    我的目的就是我这边边有个可控制的时间,对比的话可以是获取电脑时间,完全可以忽略通过修改电脑时间来达到永久有效的目的,因为启动的软件也是要获取电脑时间的,如果修改了时间那么软件的时间也不对,对于业务也有影响。
只不过我现在没有好的方案,用txt这个不知道为啥容易出问题。

TOP

返回列表