标题: 10元红包--指定文件定时复制覆盖指定文件 [打印本页]
作者: yxtaodu 时间: 2018-10-24 21:23 标题: 10元红包--指定文件定时复制覆盖指定文件
具体报酬:10元人民币
支付方式:微信
联系方式:微信号326七九79六九
有效期:18年10月30
要求描述:应用win server 2008 64位系统中
举例: D盘下123.php文件覆盖D:\123.php
D盘下789\123.php文件覆盖D:\xyz\123.php
D盘下qaz\123.php文件覆盖D:\wsd\123.php
就三个文件,需要定时,比如三分钟强制覆盖一次,循环下去。
作者: zaqmlp 时间: 2018-10-24 22:12
本帖最后由 zaqmlp 于 2018-10-24 22:14 编辑
- @echo off
- rem 建议用任务计划执行
- >"%tmp%\sleep.vbs" echo;WScript.Sleep WSH.Arguments(0)*1000*60
- set n=1
- :loop
- echo;%n%
- copy "D:\123.php" "D:\456.php" /y
- copy "D:\789\123.php" "D:\xyz\123.php" /y
- copy "D:\qaz\123.php" "D:\wsd\123.php" /y
- set /a n+=1
- cscript -nologo -e:vbscript "%tmp%\sleep.vbs" 3
- goto :loop
复制代码
作者: 窄口牛 时间: 2018-10-24 22:21
本帖最后由 窄口牛 于 2018-10-24 22:35 编辑
@echo off
:start
copy D:\123.php D:\123.php /y
copy d:\789\123.php D:\xyz\123.php /y
copy d:\qaz\123.php D:\wsd\123.php /y
timeout /t 180
goto start
作者: 窄口牛 时间: 2018-10-24 22:22
不知道你第一行自己覆盖自己是什么意思
作者: yhcfsr 时间: 2018-10-24 22:28
本帖最后由 yhcfsr 于 2018-10-24 22:41 编辑
这个你完全可以自己写。
比如下面这个例子,每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制这个文件到D:\xyz\123.TXT(覆盖);如果文件没变化,就不会复制。- @echo off
- rem 设置监视时间间隔(分钟)
- set "time_span=3"
- robocopy "D:\789" "D:\xyz" "123.txt" /mot:%time_span%
复制代码
你要监视几个文件就写几个ROBOCOPY语句,格式:- robocopy "源目录" "目的目录" "文件名" /mot:时间间隔
复制代码
还有一种用法,是监视整个文件夹,如下面,每3分钟检查源目录,如果“源目录”中有文件更改(修改或新建),都会复制到“目的目录”:- robocopy "源目录" "目的目录" /MOT:3
复制代码
作者: yxtaodu 时间: 2018-10-24 23:28
回复 5# yhcfsr
你给了一个很好的思路
假如是每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制D:\xyz\123.TXT 去强制覆盖D:\789\123.txt;如果文件没变化,就不会复制。
另外,这个变化是指大小变化,还是其他形式的变化?
这个怎么处理? 谢谢。
作者: yhcfsr 时间: 2018-10-24 23:50
本帖最后由 yhcfsr 于 2018-10-24 23:58 编辑
回复 6# yxtaodu
我举的例子就是实现你说的这个功能.
至于改变验证,具体机制不太清楚,可能是MD5验证吧,这样才能保证文件任何信息的改变都能被检测到.
作者: yxtaodu 时间: 2018-10-25 01:39
回复 7# yhcfsr
首先感谢以上所有人的回复,谢谢!
再请教下这位朋友,你的思路是(每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制这个文件到D:\xyz\123.TXT(覆盖);如果文件没变化,就不会复制。)
我想要的是(每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制D:\xyz\123.TXT 去强制覆盖D:\789\123.txt;如果文件没变化,就不会复制。)
这个要如何写?谢谢! 先不考虑验证机制吧,我自己测试了再说。
作者: yhcfsr 时间: 2018-10-25 02:17
本帖最后由 yhcfsr 于 2018-10-25 02:24 编辑
回复 8# yxtaodu
这样ROBOCOPY就不好办了.不如直接采用上面几位的答案,不用进行判断,时间一到强制覆盖.
如果非要进行文件验证,了解下这个命令获取文件的MD5- certutil -hashfile "文件全路径" MD5|FINDSTR /v "[^0-9a-z]"
复制代码
还有一种方法是,通过修改文件属性,设置成只读,让程序无法修改文件,但又能正常读取和使用文件.- icacls "文件全路径" /grant everyone:f
- icacls "文件全路径" /deny everyone:(WA,WDAC)
复制代码
作者: yxtaodu 时间: 2018-10-25 14:38
回复 3# 窄口牛
朋友,你好! 麻烦加下我微信,红包给你,我已经在使用你的方案。 再次感谢!
作者: yxtaodu 时间: 2018-10-25 14:39
回复 9# yhcfsr
谢谢! 我已经在使用楼上的简单方案了,不去研究和比对了,感谢你的回复!
作者: xczxczxcz 时间: 2018-10-25 15:53
偶刚上场,就已经收场了。下面的不支持 XP,也可能不支持精简版系统。支持完整版win7及以上系统。- @echo off
- set "A1=D:\123\123.txt" & set "A2=D:\234\123.txt"
- set "B1=D:\789\123.txt" & set "B2=D:\xyz\123.txt"
- set "C1=D:\qaz\123.txt" & set "C2=D:\wsd\123.txt"
- :BEGIN
- Setlocal EnableDelayedExpansion
- for %%a in (A;B;C) do (for %%e in (1;2) do for /f "skip=1 delims=" %%i in ('certutil -hashfile "!%%a%%e!" SHA1^|findstr /iv "Certutil"') do set "HASH_%%a%%e=%%i" & if /i "!HASH_%%a1!" neq "!HASH_%%a2!" copy /y "!%%a1!" "!%%a2!")
- Endlocal
- timeout /t 180 /nobreak >nul & CLS & goto BEGIN
复制代码
=======================
可以自己修改上面的文件位置和名称。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |