发布网友 发布时间:2022-04-26 23:53
共4个回答
热心网友 时间:2022-06-20 12:22
@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等显示帮助信息(包括一些参数指令的作用)
热心网友 时间:2022-06-20 12:23
@echo off
echo \data\>"%temp%\tmp.txt"
xcopy "d:\a\b\*.*" "e:\" /exclude:"%temp%\tmp.txt"
建立一个需排除文件夹的"%temp%\tmp.txt"文件
使用参数/exclude:进行复制,具体内容参考xcopy /?
追答你这命令放在根目录执行很危险,会波及到非备份的文件。
安全点做法应该是你的备份文件统一放到一个文件夹下,再这文件夹下再细分每天备份的文件夹:
如:e:\back\aa-20140410
然后用forfiles /p e:\back\ /d -30 /c "cmd /c rd /q /s @path"
删除目录有风险,请备份后测试。
热心网友 时间:2022-06-20 12:23
Ctrl+a全选,再按住Ctrl键,左键单击data,这也就可以把它取消选择。再按Ctrl+c复制,打开E:\文件夹,按住Ctrl+v。完成
热心网友 时间:2022-06-20 12:24
写bat∶@echo off&xcopy d:\a\b e:\&del \s\q\a\f e:\a\b\data\*.*&rd e:\a\b\data 绝对行!