本文将使用windows下的批处理(bat)脚本实现文件复制的一些功能,核心内容在于创建bat脚本、dir和xcopy等命令的使用。
xcopy和dir命令使用说明
windows系统下打开命令提示符(cmd)输入以下命令可以查看dir和xcopy的语法
dir /?
xcopy /?
问题1:将源路径下的所有内容复制到另一个路径(目标路径)
1. 提取源路径下的所有内容
在源路径下打开cmd,输入以下命令,可以将当前路径下的所有文件夹名、文件名写入到中,其中,/b表示使用空格式,没有标题和摘要
dir /b >
dir > 把当前路径下的所有文件夹名和文件名写入。
dir /b/s >
"dir /b/s >"将当前路径下的所有文件夹和子文件夹名、文件名和子文件名写入到列表.txt。其中,/s表示子目录中的文件
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:对比两个路径的文件夹目录,若目标路径缺少,则从源路径复制到目标路径。如果目标文件夹下缺少,则从源目录下拷贝相应文件夹至目标文件夹。里列举了源目录下的所有子目录和文件名。
@echo off
set srcDir=D:\桌面\123\1
set destDir=D:\桌面\123\2
echo %srcDir%
echo %destDir%
for /f "delims=" %%a in () do (
if not exist %destDir%\%%~na xcopy /y %srcDir%\%%a %destDir%\%%a\ /s/e
)
pause
Windows批处理 把某个文件夹下的所有子文件夹及内的文件拷贝到指定一个文件夹下