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

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

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

  1. if /i %date:~0,10% leq 2023/10/01 (goto :b)
  2. echo 程序使用到期
  3. pause
  4. :b
  5. echo 欢迎使用
  6. pause
复制代码
本地时间验证

TOP

回复 19# hlzj88


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

TOP

回复 17# sditwzh
其实,只需要在bat内指定固定时间执行一个循环,重新读取指定地址的时间,比如限定为半夜。有的人电脑是永不关机的,没有这个循环,他是永不过期的。
目的,学习批处理

TOP

回复 17# sditwzh
最要是本地电脑时间也是可调的,属于不可控的变量。发散想了想:你倒是可以定义一个授权周期,跟本地电脑时间做对比,20天内有效之类的。

TOP

回复 16# holley


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

TOP

本帖最后由 holley 于 2022-10-18 15:57 编辑

回复 13# sditwzh
我说的意思就是单纯以服务器上某一个或两个文件的修改时间作为基准,一般不去动它,只有此文件的内容发生变化且被保存,才会更新修改时间(甚至有工具可以直接修改‘修改时间’)。再定义一个授权日期,先校验文件名再确认你的授权日期在这两个文件的修改时间之内才能正常运行bat。想让bat过期,只需要自己控制服务器上文件的修改时间即可。或者定义授权日期完全等于服务器上此文件的修改时间,你可以随时控制它是否过期。
闲的,简单试了一下:
  1. @echo off
  2. set file_1="\\192.168.87.128\A\a.bat"
  3. set file_2="\\192.168.87.128\A\b.bat"
  4. call :check %file_1% %file_2%
  5. pause>nul&exit
  6. :your
  7. echo 调用客户需要运行的文件或命令
  8. :check
  9. if "%~t1"=="%~t2" (call :your) else echo 此程序授权已过期!
复制代码

TOP

回复 14# hlzj88


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

TOP

回复 9# sditwzh

按你的要求,你需要两个日期,1 你控制期限的日期,2不是客户电脑时间的日期。对于第一个日期,如果局域网可能好办点,在ftp,或你共享的文件夹里放txt供bat来下载获得时间。如果没这条件,可以在网络开博客利用一个固定网页来提供这两个时间。当然博客的该网页内容是要允许反复编辑的。我没玩过博客,不了解。总之,你需要一个可以提供时间的地址。第2个问题在上面选天气网已经考虑到长期需要的情况,已经可以解决。但是不是绝对可靠。
目的,学习批处理

TOP

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

回复 10# holley


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

TOP

回复 11# Batcher


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

TOP

回复 9# sditwzh


    如果客户也懂点BAT,那么他只需要修改你代码里面的一个if语句就能跳过验证了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# sditwzh
我记得文件变量后面直接加_t是不是就是获取此文件的修改时间?再以此为基础判断是否授权过期?

TOP

回复 8# hlzj88


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

TOP

  1. @echo off&&setlocal enabledelayedexpansion
  2. del /q *a1.*
  3. set qx=20221017
  4. wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" --no-check-certificate -c -q -N -t 0 -O a1.html "http://www.weather.com.cn/#404"
  5. findstr /i "utf" a1.html&&iconv -c -f utf-8 -t GBK a1.html>>gba1.html
  6. findstr /i "padding" gba1.html|findstr /i "%date:~0,4%">a1.txt
  7. cls
  8. for /f "tokens=1,2* delims=^< " %%i in (a1.txt) do (
  9. set "sj=%%i"
  10. set sj=!sj: =!
  11. set sj=!sj:年=!
  12. set sj=!sj:月=!
  13. set sj=!sj:日=!
  14. )
  15. del /q *a1.*>nul 2>nul
  16. if !rq! leq %qx% (goto bq) else (echo 程序使用到期,不再运行&&ping /n 5 127.1>nul&&exit)
  17. :bq
  18. echo 欢迎使用
  19. pause
复制代码
采用天气网的网页数据,因为要转码,又多采用了iconv程序http://bcn.bathome.net/s/tool/index.html?key=iconv
1

评分人数

目的,学习批处理

TOP

返回列表