[英]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.