我的环境介绍:
win2003
运行--\172.16.6.218
访问另外一台sql备份文件夹并且复制到本地E盘,并且删除3天前的备份数据,并且使用的命令(已经可以运行)如下:
@echo off
cd /d "E:\WMS-bak"
forfiles /p E:\WMS-bak /s /m *.bak /d -3 /c "cmd /c del @path"
net use \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup password /user:nameadmin
copy /z \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup E:\WMS-bak
exit
解析命令:
1)cd 命令简单 不会的问问百度吧哈哈哈。
2)forfiles 命令你不会???你确定不会???
forfiles命令:
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
参数列表
/p Path
指定Path ,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
/m SearchMask
按照SearchMask 搜索文件。默认的SearchMask 是. 。
/s
指示forfiles 在子目录中搜索。
/c Command
在每个文件上运行指定的Command 。带有空格的命令字符串必须用引号括起来。默认的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]
选择日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,其中MM / DD / YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或- ,则使用+ 。DD 的有效范围是0 - 32768。
/?
在命令提示符下显示帮助。
删除三天前的文件
forfiles /p i:/serverbak/2005 /s /m . /d -2 /c "cmd /c del @file"
/p 指定的路径
/s 包括子目录
/m 查找的文件名掩码
/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前
/c 运行的命令行 表示为每个文件执行的命令。命令字符串应该用双引号括起来。
默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE"; 如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
示例
要列出驱动器 C: 上的所有批处理文件,请键入:
forfiles /p c:/ /s /m*.bat /c"cmd /c echo @file is a batch file"
3)net use 命令 这个命令是个重点,我任务计划本来没有这条,增加这条就可以正常运行了。主要win2003任务计划访问共享文件夹的时候,需要增加命令行访问(虽然我增加了映射本地Z盘,可是还是不成功)可能是系统机制问题。password和nameadmin是你访问另外一台服务器的账号和密码。安全点我就不放上去了,加粗下。
4)copy命令简单 不会的问问百度吧哈哈哈。
5)exit 这个命令不会?那你还是别玩批处理了。
千万别喷我,主要能看到这篇文章的都是研究很久了对上面几个简单命令都有所了解的人才看的。小白就绕道吧 哈哈哈
任务计划终于运行了:查询了很多资料没有一条能解决问题的,终于搞定了。
正常运行条件:
1、首先确定用户是否为管理员用户,当然很多人现在使用administrator
2、确定“服务”有两个服务保证都启动了:
Remote Procedure Call (RPC)
Task Scheduler
3、net use \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup Holley2016 /user:administrator
这个需要放在你需要访问共享服务器的共享文件夹这条命令前面。
原文地址:http://blog.51cto.com/3263667/2329381