标题: [系统相关] 请教关于批处理文件自我升级的代码 [打印本页]
作者: edison_zhu 时间: 2020-5-14 13:10 标题: 请教关于批处理文件自我升级的代码
1.思路
批处理运行时,检测局域网盘中的文件的日期,如果较新时,运行更新代码
2.代码内容
对比两文件创建立时间日期,COPY较新的替换旧文件,运行
问题
1.如何对比两文件
2.批处理自身运行时,如何替换自己
此时有个思路,使用延迟,在%TEMP%下结束批处理当前进程,COPY新文件到旧文件路径,结束替换进程。
思路有了,感觉有点复杂,请教了
作者: edison_zhu 时间: 2020-5-14 17:00
- @echo off
- ::获取文件路径
- set lj=%~dp0
- ::第一个文件为身
- set file_1="%~n0.cmd"
- ::第二个文件
- set file_2="\\192.168.3.222\t$\dls.cmd"
- ::调用时间对比
- call :smile %file_1% %file_2%
- pause & exit
-
-
- rem 判断时间
- :smile
- if "%~t1"=="%~t2" (
- echo 无需更新
- goto one
- ) else (
- echo 需要更新
- goto gx
- )
-
- :gx
- echo 正在更新...
- ren %file_1% old%file_1%
- copy "\\192.168.3.222\t$\dls.cmd" %lj% /y
- call %lj%\dls.cmd
- exit
-
- :one
- echo 文件没有更新
- pause
复制代码
自己写了一个,但中文路径下就失效了。。无语
作者: edison_zhu 时间: 2020-5-20 15:00
版本帮忙看看啊
上面的代码基本能用
但发现一些特殊的情况下,会出错。
比如:如果在新文件所在的文件夹运行它本身时,会产生无限循环的结果。
问题可能是不断的自我复制与替换。如何屏蔽?
还有,请把代码优化一下。有点简陋
作者: Batcher 时间: 2020-5-26 00:08
回复 3# edison_zhu
试试这样可以吗:
https://mp.weixin.qq.com/s/DixV7t8KFySKNX974u2IBw
作者: edison_zhu 时间: 2020-5-26 16:13
回复 4# Batcher
感谢,测试中...
作者: edison_zhu 时间: 2020-5-27 09:56
回复 4# Batcher
测试完成。基本满足所需。感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |