PDA

Показать полную графическую версию : Проверка существования файлов в папке и копирование файлов в другую


Funbeee
06-09-2016, 15:05
Добрый день.

Плохо разбираюсь в батниках и буду очень признателен за помощь.

1. Есть конструкция, которая, если я правильно понимаю, копирует файлы, которых не существует в папке archive, в папку outbox( все названия изменены в целях безопасности :) ):

NET USE y: /DELETE /YES
NET USE y: \\ip\folder_1\folder_2 /u:login pass /YES
for /F "delims=" %%G IN ('DIR Y:\ds\ts\*.xml /A-D /B') do IF NOT EXIST C:\ex\rec\archive\%%G copy /y Y:\ds\ts\%%G C:\ex\rec\outbox

Как сделать, чтобы эта конструкция работала только для файлов старше 3х дней?

2. Нашел конструкцию, которая копирует файлы старше 3х дней, но не знаю, как добавить туда проверку существования данных файлов в папке archive:

FORFILES /p "Y:\ds\ts" /S /D -3 /C "cmd /c copy @path "C:\ex\rec\outbox""

Нужно дополнить одну из двух конструкций, в идеале 1ую.

greg zakharov
06-09-2016, 17:34
Funbeee, два притопа, три прихлопа... не проще ли взять PowerShell?!
net use y: /delete
net use y: \\ip\folder_1\folder_2 pass /u:login /persistent:yes
ls Y:\ds\ts\*.xml | ? {$_.CreationTime -lt [DateTime]::Now.AddDays(-3)} | % {
if (!(Test-Path "C:\ex\rec\archive\$_")) { cp $_ C:\ex\rec\outbox }
}

Funbeee
07-09-2016, 12:51
Funbeee, два притопа, три прихлопа... не проще ли взять PowerShell?!
net use y: /delete
net use y: \\ip\folder_1\folder_2 pass /u:login /persistent:yes
ls Y:\ds\ts\*.xml | ? {$_.CreationTime -lt [DateTime]::Now.AddDays(-3)} | % {
if (!(Test-Path "C:\ex\rec\archive\$_")) { cp $_ C:\ex\rec\outbox }
} »

Код, я так понимаю на PS? У нас давно уже многое завязано на подобных батниках. И нет причины брать PowerShell.

Надо добавить пару строк в уже рабочий bat. Буду признателен за помощь.




© OSzone.net 2001-2012