Как исключить определенные каталоги из рекурсивной копии в пакетном файле Windows? - PullRequest
1 голос
/ 04 марта 2010

Я пишу сценарий оболочки для резервного копирования содержимого текущего каталога в подкаталог с отметкой времени, ./STATES/$DATE. Очевидно, я не хочу, чтобы сама папка STATES копировалась каждый раз при резервном копировании папки, поэтому мне нужно каким-то образом исключить ее из копии.

Вот непроверенный сценарий оболочки, показывающий, как я подхожу к этому на * 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

Как мне добиться этого в командном файле?

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Вот, пожалуйста. Это из моих собственных сценариев:

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%
)
0 голосов
/ 19 марта 2010
Параметр

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...