Board logo

标题: [文件操作] 继续请教文件夹复制的BAT代码如何实现? [打印本页]

作者: image1001    时间: 2023-3-11 00:00     标题: 继续请教文件夹复制的BAT代码如何实现?

比如,D盘AAA目录下面有按序号从0001到0500命名的文件夹,如何指定将0100到0200的文件夹以及文件夹内的文件复制到E盘BBB目录下,这用BAT如何实现?非常感谢!

或者根据我预先整理好的list名单,这份名单中有0100,0101,0102.....0200文件夹名,那bat直接根据这份名单去将这些文件夹复制到新的目录 。
作者: terse    时间: 2023-3-11 03:35

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (10100,1,10200) do (
  3.      set "str=%%i"
  4.      set "f=!str:~1!"
  5.      if exist "d:\aaa\!f!\" xcopy "d:\aaa\!f!" "e:\bbb\!f!" /y /i
  6. )
  7. pause
复制代码

作者: image1001    时间: 2023-3-11 15:40

还有点问题,我把BAT改成这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (10003,1,10006) do (
  3.      set "str=%%i"
  4.      set "f=!str:~1!"
  5.      if exist "d:\aaa\!f!\" xcopy "d:\aaa\!f!" "e:\bbb\!f!" /y /i
  6. )
  7. pause
复制代码
AAA目录下有0001,0002,0003,0004,0005,0006,0007,0008这几个文件夹,我执行后,E盘BBB下面只有0003,0005,0006
0004没有复制过去,0004目录下我没有放任何文件,这就是空文件夹不会复制过去吗?不过这样也没多关系

另外,再请教下,如果我只复制0003,0005,0008这三个文件夹,这语句怎么写呢?
作者: Batcher    时间: 2023-3-11 16:54

回复 3# image1001
  1. @echo off
  2. for %%i in (0003 0005 0008) do (
  3.     if exist "D:\AAA\%%i\" (
  4.         xcopy /e /y "D:\AAA\%%i" "E:\BBB\%%i\"
  5.     )
  6. )
复制代码

作者: image1001    时间: 2023-3-11 19:28

非常感谢!
作者: image1001    时间: 2023-3-13 16:05

回复 2# terse


再请教下,将这段代码加个动作,在复制之前先清空目标文件夹内的所有文件和文件夹,那要如何改呢?
作者: terse    时间: 2023-3-13 17:28

回复 6# image1001
代码第二行添加
  1. rd /s /q "e:\bbb\"&md "e:\bbb\"
复制代码

作者: image1001    时间: 2023-3-14 14:41

非常感谢




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