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

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

就三个文件,需要定时,比如三分钟强制覆盖一次,循环下去。

偶刚上场,就已经收场了。下面的不支持 XP,也可能不支持精简版系统。支持完整版win7及以上系统。
  1. @echo off
  2. set "A1=D:\123\123.txt" & set "A2=D:\234\123.txt"
  3. set "B1=D:\789\123.txt" & set "B2=D:\xyz\123.txt"
  4. set "C1=D:\qaz\123.txt" & set "C2=D:\wsd\123.txt"
  5. :BEGIN
  6. Setlocal EnableDelayedExpansion
  7. 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!")
  8. Endlocal
  9. timeout /t 180 /nobreak >nul & CLS & goto BEGIN
复制代码
=======================
可以自己修改上面的文件位置和名称。

TOP

回复 9# yhcfsr


    谢谢!   我已经在使用楼上的简单方案了,不去研究和比对了,感谢你的回复!

TOP

回复 3# 窄口牛


    朋友,你好!  麻烦加下我微信,红包给你,我已经在使用你的方案。   再次感谢!

TOP

本帖最后由 yhcfsr 于 2018-10-25 02:24 编辑

回复 8# yxtaodu


    这样ROBOCOPY就不好办了.不如直接采用上面几位的答案,不用进行判断,时间一到强制覆盖.
如果非要进行文件验证,了解下这个命令获取文件的MD5
  1. certutil -hashfile "文件全路径" MD5|FINDSTR /v "[^0-9a-z]"
复制代码
还有一种方法是,通过修改文件属性,设置成只读,让程序无法修改文件,但又能正常读取和使用文件.
  1. icacls "文件全路径" /grant everyone:f
  2. icacls "文件全路径" /deny everyone:(WA,WDAC)
复制代码
QQ 33892006

TOP

回复 7# yhcfsr


    首先感谢以上所有人的回复,谢谢!   
    再请教下这位朋友,你的思路是(每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制这个文件到D:\xyz\123.TXT(覆盖);如果文件没变化,就不会复制。)
    我想要的是(每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制D:\xyz\123.TXT  去强制覆盖D:\789\123.txt;如果文件没变化,就不会复制。)
    这个要如何写?谢谢!   先不考虑验证机制吧,我自己测试了再说。

TOP

本帖最后由 yhcfsr 于 2018-10-24 23:58 编辑

回复 6# yxtaodu
我举的例子就是实现你说的这个功能.
至于改变验证,具体机制不太清楚,可能是MD5验证吧,这样才能保证文件任何信息的改变都能被检测到.
QQ 33892006

TOP

回复 5# yhcfsr

    你给了一个很好的思路
    假如是每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制D:\xyz\123.TXT  去强制覆盖D:\789\123.txt;如果文件没变化,就不会复制。
    另外,这个变化是指大小变化,还是其他形式的变化?
    这个怎么处理?  谢谢。

TOP

本帖最后由 yhcfsr 于 2018-10-24 22:41 编辑

这个你完全可以自己写。
比如下面这个例子,每3分钟检查D:\789\123.TXT,如果这个文件发生改变,就会复制这个文件到D:\xyz\123.TXT(覆盖);如果文件没变化,就不会复制。
  1. @echo off
  2. rem 设置监视时间间隔(分钟)
  3. set "time_span=3"
  4. robocopy "D:\789" "D:\xyz" "123.txt" /mot:%time_span%
复制代码
你要监视几个文件就写几个ROBOCOPY语句,格式:
  1. robocopy "源目录" "目的目录" "文件名" /mot:时间间隔
复制代码
还有一种用法,是监视整个文件夹,如下面,每3分钟检查源目录,如果“源目录”中有文件更改(修改或新建),都会复制到“目的目录”:
  1. robocopy "源目录" "目的目录" /MOT:3
复制代码
QQ 33892006

TOP

不知道你第一行自己覆盖自己是什么意思

TOP

本帖最后由 窄口牛 于 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

TOP

本帖最后由 zaqmlp 于 2018-10-24 22:14 编辑
  1. @echo off
  2. rem 建议用任务计划执行
  3. >"%tmp%\sleep.vbs" echo;WScript.Sleep WSH.Arguments(0)*1000*60
  4. set n=1
  5. :loop
  6. echo;%n%
  7. copy "D:\123.php" "D:\456.php" /y
  8. copy "D:\789\123.php" "D:\xyz\123.php" /y
  9. copy "D:\qaz\123.php" "D:\wsd\123.php" /y
  10. set /a n+=1
  11. cscript -nologo -e:vbscript "%tmp%\sleep.vbs" 3
  12. goto :loop
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表