Board logo

标题: [文件操作] 【已解决】求批处理代码排除指定文件夹复制其余文件夹 [打印本页]

作者: 开心旺旺    时间: 2015-8-21 09:37     标题: 【已解决】求批处理代码排除指定文件夹复制其余文件夹

把B,C, d E f 文件夹移动到 2015-8-21文件夹里面 而不移动已备份文件夹
作者: flyinnet9    时间: 2015-8-21 11:04

  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

回复 2# flyinnet9


    我重新描述了下,可能没说清楚
作者: 回家路上    时间: 2015-8-21 12:50

回复 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

回复 4# 回家路上


    好的
作者: 开心旺旺    时间: 2015-8-21 13:15

回复 4# 回家路上


    如果移动的文件正在使用,最好能出一个LOG 报告
作者: 开心旺旺    时间: 2015-8-21 13:19

回复 4# 回家路上


    如果排除多个文件夹 要怎么修改
作者: 开心旺旺    时间: 2015-8-21 13:49

本帖最后由 开心旺旺 于 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个或者更多文件夹,这个就不太好用了
作者: flyinnet9    时间: 2015-8-21 14:57

建一个名为“排除.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

回复 9# flyinnet9


    我还有一个问题想指教,如果2015那个文件夹里面有,外面也有,能直接替换么
作者: 开心旺旺    时间: 2015-8-21 16:08

回复 10# 开心旺旺


    如果2015文件夹和外面有一致的就拒绝访问了 求解
作者: 回家路上    时间: 2015-8-21 18:02

回复 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. pause & exit /b
复制代码

作者: 开心旺旺    时间: 2015-8-24 14:18

回复 12# 回家路上


    刚看到回复~问题解决了 thank you




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2