bat脚本——提取多个文件夹到指定路径

问题: 我需要从一个文件夹下面快速查找部分子文件夹,并将其复制到另一个地方

1. 提取原始文件夹下的所有目录名

在原始文件夹下打开cmd,输入以下命令,可以将所有目录名输出到列表.txt

dir/b>E:\列表.txt

dir . > a.txt 把当前目录文件列表写入a.txt。
dir . /s > a.txt 把当前目录文件列表写入a.txt,包括子目录下文件。

2. 复制文件

@echo off

for /f "delims=" %%a in (列表.txt) do (
         md D:\temp\复制后
         xcopy  /y D:\temp\原始文件夹\%%a  D:\temp\复制后\%%a\  /s/e  )

md 是创建目标文件夹(当文件夹已存在时会提示)
xcopy

  • /y 是指当目标文件夹中有同名文件时,不再询问是否覆盖而是直接覆盖。
  • /s: 复制非空的目录和子目录。如果省略“/s”,则“xcopy”将在单个目录中工作。
  • /e: 复制所有子目录,包括空目录。将“/e”与“/s”和“/t”命令行选项一起使用。
  • /t: 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含“/e”命令行选项。
  • 如果命令结尾%%a后面不写斜杠\就会问是目录还是文件,写上就会直接拷贝

for循环后面的参数

  • /d 查询目录
  • /f 查询文件

问题2:对比两个文件夹的目录和文件,没有则富足。如果目标文件夹下缺少,则从源目录下拷贝相应文件夹至目标文件夹。list1.txt里列举了源目录下的所有子目录和文件名。

@echo off
set srcDir=D:\桌面\123\1
set destDir=D:\桌面\123\2
echo %srcDir%
echo %destDir%

for /f "delims=" %%a in (list1.txt) do (
    if not exist %destDir%\%%~na xcopy  /y %srcDir%\%%a  %destDir%\%%a\  /s/e  
)

pause

Windows批处理 把某个文件夹下的所有子文件夹及内的文件拷贝到指定一个文件夹下

你可能感兴趣的:(C++,bash)