需求場景
- 服務器共享路徑:
\\192.168.61.38\補丁
- 本地列表文件:
D:\BAT\1.txt,每行一個補丁文件夾名(如 01.exe、03.exe)。
- 目標:按列表複製對應文件夾及其所有子文件到本地
D:\BAT,保持目錄結構。
批處理腳本實現
@echo off
rem ===== 配置區 =====
set "patch_dir=\\192.168.61.38\補丁"
set "work_dir=D:\BAT"
set "list_file=D:\BAT\1.txt"
rem ===================
if not exist "%work_dir%" mkdir "%work_dir%"
for /f "usebackq delims=" %%i in ("%list_file%") do (
echo 正在複製: %%i
rem /E 複製子目錄(含空) /I 目標視為目錄 /Y 覆蓋不提示
xcopy "%patch_dir%\%%i" "%work_dir%\%%i\" /E /I /Y /Q
)
echo 複製完成。
pause
關鍵參數說明
| 參數 | 作用 |
for /f | 逐行讀取文本文件 |
usebackq | 允許文件路徑含空格時用雙引號 |
delims= | 不分隔符,整行作為變量 |
xcopy /E | 複製目錄樹(含空目錄) |
/I | 目標不存在時假定為目錄 |
進階增強
- 添加錯誤日誌:
2>>error.log 記錄失敗項。
- 斷點續傳:檢查目標已存在則跳過(
if not exist)。
- 權限處理:若需域憑證,先用
net use \\192.168.61.38 /user:domain\user password 掛載。