批处理复制文件时保留原目录结构的几种方法

163 篇文章 0 订阅

 

本文主要介绍了批处理复制文件时保留原目录结构的几种方法,需要的朋友可以参考下

假设待复制的文件名为 7-zip.chm 位于 C:\Program Files 目录下的某一级子文件夹下面,但是不知道具体在哪一个子文件夹或哪一级子文件夹下。需要把它复制到 E 盘相同的目录结构下面,以便将来需要恢复的时候可以快速找到正确的位置。

例如原来的位置是:

C:\Program Files\7-Zip\7-zip.chm

那么就把文件复制到:

E:\Program Files\7-Zip\

例如原来的位置是:

C:\Program Files\7Z\Docs\7-zip.chm

那么就把文件复制到:

E:\Program Files\7Z\Docs\

【方法1】直来直去的思路

先找到待复制的文件。再判断目标位置是否存在正确的目录结构,如果不存在,则新建对应的目录结构。最后把文件复制到目标文件夹。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@echo off

REM 设置待处理的文件名

set "FileName=7-zip.chm"

REM 假设文件位于以下目录的某个子文件夹下

set "OldFolder=C:\Program Files"

REM 假设把文件复制到以下位置并保持原来的目录结构

set "NewFolder=E:"

for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\%FileName%"') do (

    for %%j in ("%OldFolder%") do (

        if not exist "%NewFolder%%%~pi" (

            md "%NewFolder%%%~pi"

        )

        copy "%%i" "%NewFolder%%%~pi"

    )

)

【方法2】一步到位的思路

利用 xcopy 命令的特性:复制文件的时候,如果目标文件夹不存在,它可以自动创建目标文件夹结构。所以找到待复制的文件之后,直接使用 xcopy 命令复制即可。

1

2

3

4

5

6

7

8

9

10

@echo off

REM 设置待处理的文件名

set "FileName=7-zip.chm"

REM 假设文件位于以下目录的某个子文件夹下

set "OldFolder=C:\Program Files"

REM 假设把文件复制到以下位置并保持原来的目录结构

set "NewFolder=E:"

for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\%FileName%"') do (

    xcopy "%%i" "%NewFolder%%%~pi"

)

【方法3】WinRAR命令打包的时候带上目录结构然后再解包

命令参数作用描述
-ep从名称中排除路径
-ep1从名称中排除基本目录
-ep2展开为完整路径
-ep3扩展路径为包含盘符的完全路径

1

2

3

4

5

6

7

8

9

10

11

12

@echo off

REM 设置待处理的文件名

set "FileName=7-zip.chm"

REM 假设文件位于以下目录的某个子文件夹下

set "OldFolder=C:\Program Files"

REM 假设把文件复制到以下位置并保持原来的目录结构

set "NewFolder=E:"

for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\%FileName%"') do (

    "C:\Program Files\WinRAR\WinRAR.exe" a -ibck "%temp%\www.weidianyuedu.com" "%%i"

)

"C:\Program Files\WinRAR\WinRAR.exe" x -ibck "%temp%\www.weidianyuedu.com" "%NewFolder%"

del /f /q "%temp%\www.weidianyuedu.com"

【方法4】7z命令打包的时候带上目录结构然后再解包

命令参数作用描述
-spf打包或解包的时候使用文件的全路径(包含盘符)
-spf2打包或解包的时候使用文件的全路径(不包含盘符)
-o设置输出目录

1

2

3

4

5

6

7

8

9

10

11

12

@echo off

REM 设置待处理的文件名

set "FileName=7-zip.chm"

REM 假设文件位于以下目录的某个子文件夹下

set "OldFolder=C:\Program Files"

REM 假设把文件复制到以下位置并保持原来的目录结构

set "NewFolder=E:"

for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\%FileName%"') do (

    "C:\Program Files\7-Zip\7z.exe" a -spf2 "%temp%\www.weidianyuedu.com" "%%i"

)

"C:\Program Files\7-Zip\7z.exe" x "%temp%\www.weidianyuedu.com" -o"%NewFolder%"

del /f /q "%temp%\www.weidianyuedu.com"

到此这篇关于批处理复制文件时保留原目录结构的几种方法的文章就介绍到这了,希望可以帮到你!

来源:微点阅读   https://www.weidianyuedu.com

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值