簡體   English   中英

如何從Windows批處理文件的遞歸副本中排除特定目錄?

[英]How do I exclude specific directories from a recursive copy in a Windows batch file?

我正在編寫一個shell腳本,以將當前目錄的內容備份到帶有時間戳的子目錄./STATES/$DATE 顯然,我不想每次備份文件夾時都重新復制STATES目錄本身,因此我需要以某種方式將其從副本中排除。

這是一個未經測試的shell腳本,顯示了如何在* nix上實現此功能:

ID="$(date +%Y%b%d%H%M%S)"
COMMITABLE="$(ls | egrep --invert-match ^STATES\$)"
STATE_PATH="$(pwd)/STATES/$ID"
mkdir --parents "$STATE_PATH"
cp $COMMITABLE "$STATE_PATH"
ln -s "$STATE_PATH" PARENT

如何在批處理文件中實現此目的?

干得好。 這來自我自己的腳本:

set now=%date:~-4%-%date:~-10,2%-%date:~-7,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%

rem Before 10:00 o'clock a space is used, this makes it a zero.
set now=%now: =0%

xcopy . copydir-%now% /i

一句話警告:這使用美國日期格式。 要匹配其他格式,您必須進行更改。 在使用荷蘭和美國系統時,我個人使用以下代碼:

rem US date versus Dutch: test 5th char is /
if "%date:~-5,1%"=="/" (
   rem Date format is mm/dd/yyyy
   set now=%date:~-4%-%date:~-10,2%-%date:~-7,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
) else (
   rem Date format is dd-mm-yyyy
   set now=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
)

xcopy/exclude:$FILE選項可用於指定包含要忽略的文件名的文件。 我的一個朋友將腳本轉換成這樣的批處理:

@echo off
set thedate=%date:~0,2%-%date:~3,2%-%date:~6,4%
md %thedate%
echo STATES > excludefile.txt
echo excludefile.txt >> excludefile.txt
xcopy <root folder of directory structure> %thedate% /e /i /exclude:excludefile.txt
del excludefile.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM