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

[系统相关] 请教关于批处理文件自我升级的代码

1.思路
批处理运行时,检测局域网盘中的文件的日期,如果较新时,运行更新代码
2.代码内容
对比两文件创建立时间日期,COPY较新的替换旧文件,运行

问题
1.如何对比两文件
2.批处理自身运行时,如何替换自己
此时有个思路,使用延迟,在%TEMP%下结束批处理当前进程,COPY新文件到旧文件路径,结束替换进程。


思路有了,感觉有点复杂,请教了

回复 4# Batcher


    测试完成。基本满足所需。感谢

TOP

回复 4# Batcher


    感谢,测试中...

TOP

回复 3# edison_zhu


试试这样可以吗:
https://mp.weixin.qq.com/s/DixV7t8KFySKNX974u2IBw
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

版本帮忙看看啊
上面的代码基本能用
但发现一些特殊的情况下,会出错。
比如:如果在新文件所在的文件夹运行它本身时,会产生无限循环的结果。
问题可能是不断的自我复制与替换。如何屏蔽?

还有,请把代码优化一下。有点简陋

TOP

  1. @echo off
  2. ::获取文件路径
  3. set lj=%~dp0
  4. ::第一个文件为身
  5. set file_1="%~n0.cmd"
  6. ::第二个文件
  7. set file_2="\\192.168.3.222\t$\dls.cmd"
  8. ::调用时间对比
  9. call :smile %file_1% %file_2%
  10. pause & exit
  11. rem 判断时间
  12. :smile
  13. if "%~t1"=="%~t2" (
  14. echo 无需更新
  15. goto one
  16. ) else (
  17. echo 需要更新
  18. goto gx
  19. )
  20. :gx
  21. echo 正在更新...
  22. ren %file_1% old%file_1%
  23. copy "\\192.168.3.222\t$\dls.cmd" %lj% /y
  24. call %lj%\dls.cmd
  25. exit
  26. :one
  27. echo 文件没有更新
  28. pause
复制代码
自己写了一个,但中文路径下就失效了。。无语

TOP

返回列表