DOS方式定时远程从服务器共享复制文件?

服务器是2003 server,用户名:administrator,密码:server。有一共享目录“oraclebak”,每天晚上定时生成以当前日期命名的文件:2011-09-01.DMP和2011-09-01.log,第二天早上上班,我要在我的电脑(XP系统)上将这两个文件复制到我的电脑E盘oraclebak目录下,并且自动删除超过30天的文件,请问如何实现?

net use z: //192.168.0.100/oraclebak "server" /user:administrator
copy z:\%date:~,10%.* e:\oraclebak
for /f "skip=30" %%i in ('dir/b/o-d e:\oraclebak\*.dmp') do del %%i
for /f "skip=30" %%i in ('dir/b/o-d e:\oraclebak\*.log') do del %%i追问

谢谢您的解答,不过,看您的第二行代码,是复制的当天的文件,我要的是复制“前一天”的文件,这是关键,呵呵。

追答

net use z: //192.168.0.100/oraclebak "server" /user:administrator
for /f %%i in ('dir/od/b z:\*.dmp') do set fn=%%~dpnxi
copy %fn% e:\oraclebak
for /f %%i in ('dir/od/b z:\*.log') do set fn=%%i~dpnxi
copy %fn% e:\oraclebak
for /f "skip=30" %%i in ('dir/b/o-d e:\oraclebak\*.dmp') do del %%i
for /f "skip=30" %%i in ('dir/b/o-d e:\oraclebak\*.log') do del %%i

追问

谢谢您的回答,我测试了一下,有两点不解,第一,不能联接到服务器共享目录;第二,删除的是批处理文件所在的目录里的文件,而不是e:\oraclebak\目录下的文件;
我从网上搜了一下,有两个批处理可以实现此功能,已测试成功,只是我想将这两个批处理合并成一个,试了几次,皆不成功,能否帮我合并一下,谢谢!
因受字数限制,我将代码发在我的QQ空间,请您到我的QQ空间看一下。万分感谢!
http://35139603.qzone.qq.com/

追答

简单看了你空间脚步,与你提问描述的问题是一致的,感觉太繁琐,想给你说说我的思路。
dir命令有很多参数,可以按文件创建时间排序,例
dir/od
dir/o-d
你的备份和删除都可以用这个命令简单实现。
先说备份,你是每天晚上定时生成数据,第二天早上当天的数据还没生成,则昨天的数据按时间排序是最后一条记录
@echo off
set bakdir=D:\Oraclebak\
net use S: \\192.168.1.99\D$ server /user:administrator
pushd s:\oraclebak
for /f %%i in ('dir/od/b *.dmp') do set dmpfile=%%i
for /f %%i in ('dir/od/b *.log') do set logfile=%%i
copy %dmpfile% %bakdir%
copy %logfile% %bakdir%
再说删除,按日期逆序(dir/o-d)排序,忽略前30个文件删除后面的即可实现你的要求,路径是可以修改的
pushd %cd%
for /f "skip=30" %%i in ('dir/b/o-d *.dmp') do del %%i
for /f "skip=30" %%i in ('dir/b/o-d *.log') do del %%i

如果你一定要用绝对日期文件名处理的话,你参考一下我以前回答的一个提问,用vbs进行日期计算简单的多。
http://zhidao.baidu.com/question/312144303.html?fr=im100008

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜