批处理 复制除指定文件夹外的所有文件和文件夹

例如我D:\A\B下有很多文件和文件夹,D:\A\B下有个文件夹data,我要复制D:\A\B下除data文件夹外的所有文件和文件夹,用批处理该怎么写?最好加个注释,本人... 例如我D:\A\B下有很多文件和文件夹,D:\A\B下有个文件夹data,我要复制D:\A\B下除data文件夹外的所有文件和文件夹,用批处理该怎么写?最好加个注释,本人菜鸟级,好好学习下。
复制到E:\下。
展开
 我来答
伈雨_
2014-04-10 · TA获得超过299个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:90.9万
展开全部
@echo off
set "spath=d:\A\B" %需要复制的目录%
set "spath_target=e:\abc" %复制的目标目录%
set "ignore_target=data" %排除的目录%
for /f "delims=" %%1 in ('dir/s/b %spath%')do ( 
 if not %%~nx1==%ignore_target% ( %判断是否包含data文件夹,如果包含则跳过%
  if exist "%%1\" ( %判断是文件夹还是文件,如果是文件夹,则用xcopy复制文件夹,否则用copy复制文件%
   echo 正在复制文件夹 - %%1
   echo d|xcopy /e /y "%%1" "%spath_target%\%%~p1\%%~nx1">nul 2>nul
  )else (
  echo 正在复制文件 - %%1
  copy "%%1" "%spath_target%\%%~p1\%%~nx1">nul 2>nul
  )
 )
) %有几个左括号就得有几个右括号括起来%
pause %暂停批处理% 
::>nul表示忽略正确的结果,2>nul表示忽略错误的结果,一起使用就是完全屏蔽执行结果.(屏蔽copy等不必要的返回结果)
::%spath_target%\%%~p1\%%~nx1的执行结果是 e:\abc\%%~p1(代表for循环返回结果,p[变量]=路径,不包括盘符)
::%%~nx1的执行结果是e:\abc\###\文件名+文件后缀名(xxx.xxx).如果是文件夹的话这里的x1没有任何作用的.是我偷懒复制上去的
::%%~nx1 n=name x=suffix,参数可以是n1或x1 也可以是nx1 这里的1代表变量名
::%%1是完整执行结果,不含参数
::delims=忽略循环中的空格部分
::copy或xcopy 文件/文件夹 目标文件/文件夹
::copy复制文件
::xcopy可以复制文件也可以文件夹,只不过这里的xcopy不能同时处理文件或文件夹,所以要用2个命令来分开处理
::echo d|表示自动执行参数操作(如果文件夹不存在则自动创建文件夹,无需手动操作)
::xcopy /e表示即使是空的文件夹也复制./y表示直接确定复制,无需确认
::详细的处理结果可以在菜单 - 运行 - 输入cmd,打开cmd窗口后,输入copy或xcopy、if等显示帮助信息(包括一些参数指令的作用)
xxpinqz
推荐于2017-11-26 · TA获得超过1322个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:1312万
展开全部
@echo off
echo \data\>"%temp%\tmp.txt"
xcopy "d:\a\b\*.*" "e:\" /exclude:"%temp%\tmp.txt"

建立一个需排除文件夹的"%temp%\tmp.txt"文件

使用参数/exclude:进行复制,具体内容参考xcopy /?

追问
大侠,用了你的方法,可行,高人呐。还想请教下,因为我是每天都备份的,备份至新建文件夹(例如文件夹命名:AA-20140410),我想自动删除超过30天的备份,该怎么写?
forfiles /p E:\ *.* /m -d -90 /c "cmd /c del /f @path"
这个有什么问题?
追答
你这命令放在根目录执行很危险,会波及到非备份的文件。
安全点做法应该是你的备份文件统一放到一个文件夹下,再这文件夹下再细分每天备份的文件夹:
如:e:\back\aa-20140410
然后用forfiles /p e:\back\ /d -30 /c "cmd /c rd /q /s @path"
删除目录有风险,请备份后测试。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亦应忘
2014-04-10
知道答主
回答量:52
采纳率:0%
帮助的人:12.7万
展开全部
Ctrl+a全选,再按住Ctrl键,左键单击data,这也就可以把它取消选择。再按Ctrl+c复制,打开E:\文件夹,按住Ctrl+v。完成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式