当前位置:   article > 正文

使用 Bat 批处理脚本复制目录的相关操作_文件复制脚本

文件复制脚本

Bat复制目录到多个文件夹下

版本一

定义路径,放在一个 mypath.txt 中。

D:\apache-tomcat-8.5.39\webapps\aaa\
D:\apache-tomcat-8.5.39\webapps\bbb\
D:\apache-tomcat-8.5.39\webapps\ccc\
D:\apache-tomcat-8.5.39\webapps\ddd\
  • 1
  • 2
  • 3
  • 4

遍历上面的txt,取出每一行来拼出目录路径。执行复制:

@echo off
@setlocal enabledelayedexpansion

REM 这里是上次发布的文件的路径
set bakSourcePath=D:\Tomcat\webapps\agriculture
set bakTargetPath=..\Wechat发布备份\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

echo 自动备份旧版本。。。
@xcopy "%bakSourcePath%" "%bakTargetPath%\agriculture" /c/q/e/y/i

echo 开始复制到Tomcat集群路径中去。。。
REM 这里是原文件路径
set sourcePath=E:\myweb\

REM 遍历txt文件取目标路径
@for /f "delims=" %%i in (mypath.txt) do (
	
	@set targetPath=%%i
	
	::如果文件夹存在,先删除
	if exist !targetPath! rd /s/q !targetPath!

	::创建文件夹
	md !targetPath!

	::复制文件 index.html
	if exist "!targetPath!index.html" del /y "!targetPath!index.html"
	@echo f | xcopy "%sourcePath%"index.html !targetPath! /y

	::复制文件夹 html
	if not exist "!targetPath!html" md "!targetPath!html"
	echo d | xcopy "%sourcePath%html" "!targetPath!html" /c/q/e/y

	::复制文件夹 resources
	if not exist "!targetPath!resources" md "!targetPath!resources"
	echo d | xcopy "%sourcePath%resources" "!targetPath!resources" /c/q/e/y
)

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

版本二

当前文件夹下的 Tomcat_system1 拷贝到上级变成 Tomcat_system1到5

cd "%CD%"
xcopy "%CD%\Tomcat_system1" "..\Tomcat_system1" /E/I/D/Y
xcopy "%CD%\Tomcat_system1" "..\Tomcat_system2" /E/I/D/Y
xcopy "%CD%\Tomcat_system1" "..\Tomcat_system3" /E/I/D/Y
xcopy "%CD%\Tomcat_system1" "..\Tomcat_system4" /E/I/D/Y
xcopy "%CD%\Tomcat_system1" "..\Tomcat_system5" /E/I/D/Y
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
参数说明
/S复制目录和子目录,除非它们为空。 如果省略 /s,不管子目录。
/E复制目录和子目录,包括空目录
/I如果目标不存在,且要复制多个文件,则假定目标必须是目录。
/D:m-d-y复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/Y取消提示以确认要覆盖现有目标文件。
—————

版本三

从 E 根目录拷到当前目录来

cd "%CD%"
echo F | xcopy "E:\aaa.jar" "%CD%\aaa.jar" /E/I/D/Y
echo F | xcopy "E:\bbb.jar" "%CD%\bbb.jar" /E/I/D/Y
echo F | xcopy "E:\ccc.jar" "%CD%\ddd.jar" /E/I/D/Y
pause
  • 1
  • 2
  • 3
  • 4
  • 5

复制目录结构

使用 xcopy 命令来实现复制指定文件夹及其所有子文件夹,但不包含任何文件的操作。

版本一

以下是一个示例的批处理脚本 copy复制目录结构.bat 支持拖放执行:

@echo off
:: 解决读取文件内容中文乱码的问题。当前bat需要保存为utf-8
chcp 65001>nul

echo 复制目录结构,开始...
echo.

set "source_folder=%~1"
set "destination_folder=%~2"

if "%source_folder%"=="" goto usage
if "%destination_folder%"=="" (
	set "destination_folder=%source_folder%-影分身"
)

echo.
echo 源文件夹:  "%source_folder%"
echo 目标文件夹:"%destination_folder%"

xcopy "%source_folder%" "%destination_folder%" /T /E /Y /I
goto end

:usage
echo 用法A:将源文件夹拖放到此脚本文件上。 
echo 示例1:copy复制目录结构.bat "C:\jerry\source\folder"
echo.
echo 用法B:在 cmd 中执行,提供【源文件夹】和【目标文件夹】。 
echo 示例1:copy复制目录结构.bat "C:\jerry\source\folder" "C:\jerry\destination\folder\" 
echo 示例2:copy复制目录结构.bat .\source  .\destination\

:end
echo.
echo 复制目录结构,完毕!
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

在这个脚本中,需要替换 source_folderdestination_folder 的值为实际的文件夹路径。xcopy 命令的选项如下:

参数说明
/T仅复制目录结构而不包括空文件夹。若要复制空目录,必须包含 /E 命令行选项。
/E复制所有子目录,包括空目录。
/Y在目标文件夹中不询问是否覆盖现有文件。
/I如果 source 为目录或包含通配符且 目标 不存在,xcopy 则假定 destination 指定目录名称并创建新目录。 然后, xcopy 将所有指定的文件复制到新目录中。 默认情况下, xcopy 会提示指定 目标文件还是目录

当运行这个脚本时,会将指定的源文件夹复制到指定的目标文件夹中,但不包含任何文件,只会复制完整的目录结构。

版本二

绝对路径

直接在 CMD 敲命令也方便。

  1. 如果路径中不包含空格可以不用加引号
  2. /Y可省:因为我们是复制目录,不存在覆盖文件的情况。
  3. /I可省:因为目标路径末尾加上 \ 系统就会知道是目录。
    3.1. 也可以通过管道符实现,输入交互参数:echo D | xcopy source destination /E
xcopy "C:\jerry\source\folder" C:\jerry\destination\folder\ /T /E /Y /I
  • 1

相对路径

在当前目录下打开 CMD 进行复制:

xcopy .\source .\destination\ /T/E
  • 1

进一步简化

xcopy source destination\ /T/E
  • 1

参考资料

MSDN:命令 xcopy 复制文件和目录,包括子目录。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/73360
推荐阅读
相关标签
  

闽ICP备14008679号