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

2023-12-05 0 258

假设待复制的文件名为 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 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 命令复制即可。

@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扩展路径为包含盘符的完全路径

@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.jb51.net.zip\” \”%%i\”
)
\”C:\\Program Files\\WinRAR\\WinRAR.exe\” x -ibck \”%temp%\\www.jb51.net.zip\” \”%NewFolder%\”
del /f /q \”%temp%\\www.jb51.net.zip\”

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

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

@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.jb51.net.zip\” \”%%i\”
)
\”C:\\Program Files\\7-Zip\\7z.exe\” x \”%temp%\\www.jb51.net.zip\” -o\”%NewFolder%\”
del /f /q \”%temp%\\www.jb51.net.zip\”

到此这篇关于批处理复制文件时保留原目录结构的几种方法的文章就介绍到这了,更多相关bat复制文件保留目录结构内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 DOS/BAT 批处理复制文件时保留原目录结构的几种方法 https://www.u-9.cn/jiaoben/dosbat/100105.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务