2014-09-23 7 views
1

Я хочу создать пакетный файл, который будет копировать только созданные папки. Я использую следующий код, но при этом он выбирает только файлы (текстовый файл или файлы xml), а не Папка.командный файл для копирования только вновь созданных или измененных папок

xcopy "D:\Splunk\var\lib\splunk\defaultdb\db" "D:\test\Incremental_data_backup\" /m 

Пожалуйста, укажите, что мне не хватает

Благодаря Викас

+0

Так вы хотите только создавать пустые папки или вы хотите, чтобы были папки и любые файлы, которые они могли бы содержать? Также вы хотите, чтобы файлы, которые вы копируете, были новее, чем файлы в месте назначения, или вы хотите, чтобы они были новее, чем заданная дата? – ventsyv

+0

, поскольку я хочу запланировать этот пакетный файл ежедневно в 10 вечера. Так что он должен проверить исходную папку и скопировать только те, которые созданы сегодня только. Аналогично, когда планировщик запускает этот bacth на следующий день, он проверяет, есть ли у источника новая папка .... Надеюсь, я проясню ... – user3332404

ответ

2

Вы можете использовать XCOPY для этого нужно просто указать правильные параметры. Вот какие из них по отношению к вам:

/H Копирование скрытых и системных файлов и папок (по умолчанию = N)

/D: дд-мм-гггг Копировать файлы, измененные или после указанной даты. Если дата не указана, скопируйте только файлы, дата или время которых новее, чем время назначения.

/S Копирование папки и подпапки

/E Копирование папки и папки, включая пустые папки. Может использоваться для изменения/T.

Так что-то вдоль линий

xcopy <src> <dest> /HE /D:mm-dd-yyy 

Scripting дата является немного более сложным:

% Дата: ~ 4,2% - месяц дата %: -4% - год дата %: ~ 7,2% - день

Так текущая дата будет:

%date:~4,2%-%date:~7,2%-%date:-4% 
1

Вы можете попробовать этот код. Я использую параметр для маркировки как измененной папки

REM set up the TODAY variable 
REM ----- 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set year=%%c 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set month=%%b 
for /f "tokens=1-3 delims=/ " %%a in ('date /T') do set day=%%a 
set TODAY=%year%%month%%day% 
REM ----- 

:: yesterdays date 
@echo off 
set day=-1 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& 
right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YY=%result:~2,2%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "data=%mm%-%dd%-%yy%" 

xcopy D:\YourFolder D:\BAK\BAK_%TODAY% /S /D:%data% /C /R /I /K /Y 
Смежные вопросы