找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31350|回复: 12

[文件操作] 【已解决】求批处理代码排除指定文件夹复制其余文件夹

[复制链接]
发表于 2015-8-21 09:37:33 | 显示全部楼层 |阅读模式
把B,C, d E f 文件夹移动到 2015-8-21文件夹里面 而不移动已备份文件夹

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-8-21 11:04:57 | 显示全部楼层

  1. @echo off
  2. cd /d d:\a
  3. for /f "delims=" %%a in ('dir /ad /b') do (
  4.   if not "%%a"=="B" (
  5.     if not "%%a"=="D" move "%%a" "f:\z"
  6.   )
  7. )
复制代码
 楼主| 发表于 2015-8-21 11:58:38 | 显示全部楼层
回复 2# flyinnet9


    我重新描述了下,可能没说清楚
发表于 2015-8-21 12:50:02 | 显示全部楼层
回复 3# 开心旺旺

  1. @echo off
  2. set "排除=已备份"
  3. set "拷贝到=2015-8-21"
  4. for /f "delims=" %%i in ('dir /ad /b') do (
  5.         if "%%i" neq "%排除%" if "%%i" neq "%拷贝到%" move /y "%%i" "%拷贝到%"
  6. )
  7. pause & exit /b
复制代码
那个重复贴可以删掉了。
 楼主| 发表于 2015-8-21 13:06:58 | 显示全部楼层
回复 4# 回家路上


    好的
 楼主| 发表于 2015-8-21 13:15:15 | 显示全部楼层
回复 4# 回家路上


    如果移动的文件正在使用,最好能出一个LOG 报告
 楼主| 发表于 2015-8-21 13:19:47 | 显示全部楼层
回复 4# 回家路上


    如果排除多个文件夹 要怎么修改
 楼主| 发表于 2015-8-21 13:49:25 | 显示全部楼层
本帖最后由 开心旺旺 于 2015-8-21 14:14 编辑

@echo off
set "排除=已备份"
set "排除=A"
set "排除=B"
set "拷贝到=2015-8-21"
for /f "delims=" %%i in ('dir /ad /b') do (
        if "%%i" neq "%排除%" if "%%i" neq "%拷贝到%" move /y "%%i" "%拷贝到%"
)
pause & exit /b


这样就不行  A文件夹还会移动进去,如果排除2个或者更多文件夹,这个就不太好用了
发表于 2015-8-21 14:57:36 | 显示全部楼层
建一个名为“排除.txt”文件,把排除项写在文件中,一行一个
然后和bat放同一目录
  1. @echo off
  2. set flag=
  3. set "dst=2015-8-21"
  4. for /f "delims=" %%a in ('dir /ad /b') do (
  5.   if not "%%a"=="%dst%" (
  6.     for /f "delims=" %%b in (排除.txt) do (
  7.       if "%%a"=="%%b" set flag=1
  8.     )
  9.     if not defined flag move "%%a" ".\%dst%"
  10.   )
  11. )
复制代码
 楼主| 发表于 2015-8-21 15:17:05 | 显示全部楼层
回复 9# flyinnet9


    我还有一个问题想指教,如果2015那个文件夹里面有,外面也有,能直接替换么
 楼主| 发表于 2015-8-21 16:08:07 | 显示全部楼层
回复 10# 开心旺旺


    如果2015文件夹和外面有一致的就拒绝访问了 求解
发表于 2015-8-21 18:02:09 | 显示全部楼层
回复 11# 开心旺旺


自己写入,自己还要删除,自己占自己肯定不行啊。那就一步一步来,先删了在拷贝呗。

  1. @echo off
  2. set "排除=已备份;A;B"
  3. set "拷贝到=2015-8-21"
  4. for /f "delims=" %%i in ('dir /ad /b') do (
  5.         for %%a in (%排除%) do (
  6.                 if "%%i" equ "%%a" set c=1
  7.         )
  8.         if not defined c if "%%i" neq "%拷贝到%" (
  9.                 rd /s /q "%拷贝到%\%%i" 2>nul
  10.                 move /y "%%i" "%拷贝到%" 2>nul
  11.                 set c=
  12.         )
  13.        
  14. )
  15. pause & exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-8-24 14:18:08 | 显示全部楼层
回复 12# 回家路上


    刚看到回复~问题解决了 thank you
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:42 , Processed in 0.017197 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表