批處理復(fù)制文件時保留原目錄結(jié)構(gòu)的幾種方法
假設(shè)待復(fù)制的文件名為 7-zip.chm 位于 C:\Program Files 目錄下的某一級子文件夾下面,但是不知道具體在哪一個子文件夾或哪一級子文件夾下。需要把它復(fù)制到 E 盤相同的目錄結(jié)構(gòu)下面,以便將來需要恢復(fù)的時候可以快速找到正確的位置。
例如原來的位置是:
C:\Program Files\7-Zip\7-zip.chm
那么就把文件復(fù)制到:
E:\Program Files\7-Zip\
例如原來的位置是:
C:\Program Files\7Z\Docs\7-zip.chm
那么就把文件復(fù)制到:
E:\Program Files\7Z\Docs\
【方法1】直來直去的思路
先找到待復(fù)制的文件。再判斷目標(biāo)位置是否存在正確的目錄結(jié)構(gòu),如果不存在,則新建對應(yīng)的目錄結(jié)構(gòu)。最后把文件復(fù)制到目標(biāo)文件夾。
@echo off REM 設(shè)置待處理的文件名 set "FileName=7-zip.chm" REM 假設(shè)文件位于以下目錄的某個子文件夾下 set "OldFolder=C:\Program Files" REM 假設(shè)把文件復(fù)制到以下位置并保持原來的目錄結(jié)構(gòu) 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 命令的特性:復(fù)制文件的時候,如果目標(biāo)文件夾不存在,它可以自動創(chuàng)建目標(biāo)文件夾結(jié)構(gòu)。所以找到待復(fù)制的文件之后,直接使用 xcopy 命令復(fù)制即可。
@echo off REM 設(shè)置待處理的文件名 set "FileName=7-zip.chm" REM 假設(shè)文件位于以下目錄的某個子文件夾下 set "OldFolder=C:\Program Files" REM 假設(shè)把文件復(fù)制到以下位置并保持原來的目錄結(jié)構(gòu) set "NewFolder=E:" for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\%FileName%"') do ( xcopy "%%i" "%NewFolder%%%~pi" )
【方法3】WinRAR命令打包的時候帶上目錄結(jié)構(gòu)然后再解包
命令參數(shù) | 作用描述 |
-ep | 從名稱中排除路徑 |
-ep1 | 從名稱中排除基本目錄 |
-ep2 | 展開為完整路徑 |
-ep3 | 擴展路徑為包含盤符的完全路徑 |
@echo off REM 設(shè)置待處理的文件名 set "FileName=7-zip.chm" REM 假設(shè)文件位于以下目錄的某個子文件夾下 set "OldFolder=C:\Program Files" REM 假設(shè)把文件復(fù)制到以下位置并保持原來的目錄結(jié)構(gòu) 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%\chabaoo.cn.zip" "%%i" ) "C:\Program Files\WinRAR\WinRAR.exe" x -ibck "%temp%\chabaoo.cn.zip" "%NewFolder%" del /f /q "%temp%\chabaoo.cn.zip"
【方法4】7z命令打包的時候帶上目錄結(jié)構(gòu)然后再解包
命令參數(shù) | 作用描述 |
-spf | 打包或解包的時候使用文件的全路徑(包含盤符) |
-spf2 | 打包或解包的時候使用文件的全路徑(不包含盤符) |
-o | 設(shè)置輸出目錄 |
@echo off REM 設(shè)置待處理的文件名 set "FileName=7-zip.chm" REM 假設(shè)文件位于以下目錄的某個子文件夾下 set "OldFolder=C:\Program Files" REM 假設(shè)把文件復(fù)制到以下位置并保持原來的目錄結(jié)構(gòu) 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%\chabaoo.cn.zip" "%%i" ) "C:\Program Files\7-Zip\7z.exe" x "%temp%\chabaoo.cn.zip" -o"%NewFolder%" del /f /q "%temp%\chabaoo.cn.zip"
到此這篇關(guān)于批處理復(fù)制文件時保留原目錄結(jié)構(gòu)的幾種方法的文章就介紹到這了,更多相關(guān)bat復(fù)制文件保留目錄結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
批處理系統(tǒng)管理之6?-?用戶和localgroup組篇
本文主要介紹?net?localgroup?命令、net?user?命令、WMIC?命令有關(guān)本地用戶和組的增刪查改等實例,以及結(jié)合BAT腳本實現(xiàn)批量操作2023-07-07一鍵設(shè)置java 環(huán)境變量 cmd下查看、修改(覆蓋與添加)等說明
這篇文章主要介紹了cmd設(shè)置環(huán)境變量的、查看、修改(覆蓋與添加)等說明,需要的朋友可以參考下2018-01-01