赞
踩
定义路径,放在一个 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\
遍历上面的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
当前文件夹下的 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
参数 | 说明 |
---|---|
/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
使用 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
在这个脚本中,需要替换 source_folder
和 destination_folder
的值为实际的文件夹路径。xcopy 命令的选项如下:
参数 | 说明 |
---|---|
/T | 仅复制目录结构而不包括空文件夹。若要复制空目录,必须包含 /E 命令行选项。 |
/E | 复制所有子目录,包括空目录。 |
/Y | 在目标文件夹中不询问是否覆盖现有文件。 |
/I | 如果 source 为目录或包含通配符且 目标 不存在,xcopy 则假定 destination 指定目录名称并创建新目录。 然后, xcopy 将所有指定的文件复制到新目录中。 默认情况下, xcopy 会提示指定 目标 是文件还是目录。 |
当运行这个脚本时,会将指定的源文件夹复制到指定的目标文件夹中,但不包含任何文件,只会复制完整的目录结构。
直接在 CMD 敲命令也方便。
/Y
可省:因为我们是复制目录,不存在覆盖文件的情况。/I
可省:因为目标路径末尾加上 \
系统就会知道是目录。echo D | xcopy source destination /E
xcopy "C:\jerry\source\folder" C:\jerry\destination\folder\ /T /E /Y /I
在当前目录下打开 CMD 进行复制:
xcopy .\source .\destination\ /T/E
进一步简化
xcopy source destination\ /T/E
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。