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

上网导航 2023-10-15 386 0条评论
摘要: copy、xcopy、WinRAR、7-Zip...

假设待复制文件名为 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】直来直去的思路

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

@echo offREM 设置待处理的文件名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 命令复制即可。

@echo offREM 设置待处理的文件名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

扩展路径为包含盘符的完全路径

@echo offREM 设置待处理的文件名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.bathome.net.zip" "%%i")"C:\Program Files\WinRAR\WinRAR.exe" x -ibck "%temp%\www.bathome.net.zip" "%NewFolder%"del /f /q "%temp%\www.bathome.net.zip"

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

命令参数

作用描述

-spf

打包或解包的时候使用文件的全路径(包含盘符)

-spf2

打包或解包的时候使用文件的全路径(不包含盘符)

-o

设置输出目录

@echo offREM 设置待处理的文件名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.bathome.net.zip" "%%i")"C:\Program Files\7-Zip\7z.exe" x "%temp%\www.bathome.net.zip" -o"%NewFolder%"del /f /q "%temp%\www.bathome.net.zip"

文章版权及转载声明:

作者:上网导航本文地址:https://www.90xe.com/post/5916.html发布于 2023-10-15
文章转载或复制请以超链接形式并注明出处技术导航

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏