标题: [文本处理] 批处理怎样记录每次copy了哪些文件并输出到日志? [打印本页]
作者: sybwyn 时间: 2010-12-8 15:56 标题: 批处理怎样记录每次copy了哪些文件并输出到日志?
想记录每次copy了哪些文件,日志的填写有点问题,头大,想请高人看看
xcopy 服务器路径 本机路径 >> C:\update_log.txt
两种情况:
1、服务端文件全部更新到本机,日志显示:恭喜你,本机已经在“年-月-日 星期X 点-分-秒”更新了所有文件
2、如果有程序占用了部分文件而无法更新覆盖,日志显示:有以下文件因被本地程序占用未成功更新,列出文件名
达人给点指导,谢谢!
[ 本帖最后由 sybwyn 于 2010-12-8 16:00 编辑 ]
作者: hanyeguxing 时间: 2010-12-8 22:34
按照楼主的目的,必须对xcopy使用/c参数!否则复制会被 %ERRORLEVEL%=4 共享侵犯错误终止。
而使用了 /c 参数后,xcopy 不会返回错误,所以只能从2句柄中读取,而该句柄仅显示错误类型,不显示具体哪个文件出错,所以同时输出1句柄(因为/q是禁止1句柄的,所以不能用),然后对 错误.log 进行解析。
当然还有方法二,就是以1句柄输出的文件列表为参照,比较目标文件的时间以判断是否被修改。- @echo off&setlocal enabledelayedexpansion
- set "xing=C:\update_log.txt"
- echo a|xcopy "\\服务器路径" "C:\本机路径" /cfskrh>han.ye 2>&1
- for /f "tokens=1* delims=>" %%a in (han.ye) do call:han "%%a" "%%b"
- if "%gu%"=="" >>%xing% echo 恭喜你,本机已经在“%date% %time%”更新了所有文件
- del /q han.ye
- exit
- :han
- set han=%~1
- if "%han:~0,3%"=="改写 " goto:ye
- if "%han:~0,3%"=="复制了" goto:ye
- (if "%han:~0,3%"=="共享侵" (
- if "!gu!"=="" echo 有以下文件因被本地程序占用未成功更新(%date% %time%):
- echo !ye:~1!
- set gu==
- ))>>%xing%
- :ye
- set ye=%~2
复制代码
[ 本帖最后由 hanyeguxing 于 2010-12-8 23:17 编辑 ]
作者: sybwyn 时间: 2010-12-8 23:27
真是太太鸡冻了!等了盼了一天了,终于等到了高人的回复,真是不知如何感谢你,过来请你吃大餐吧!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |