Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование нескольких файлов из папки в другую с прошедшей датой (http://forum.oszone.net/showthread.php?t=265503)

salmans 03-08-2013 08:40 2195541

Копирование нескольких файлов из папки в другую с прошедшей датой
 
Доброго времени суток! Помогите пожалуйста решить одну задачу. Есть программа которая создает отчеты в некой папке "1" , каждый день в 6 утра появляются 4 файла отчета их нужно скопировать в другую папку по сети ( папка должна быть с датой предыдущего дня такого типа (дата\месяц\год). Например сегодня 3.08.2013 в 6 утра в папке "1" появятся 4 файла отчета за 2.08.2013 их нужно скопировать в созданную папку по сети с такой же датой 2.08.2013
Вот что примерно нашел

Код:

chcp 1251
echo off
cls

md \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2%
if not exist \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2% goto error5

xcopy D:\1 \\SERVER-1\Obmen\%date:~6,4%.%date:~3,2%.%date:~0,2% /y /e /z /c /h
goto exit

:exit


Таким образом папка создается но с текущей датой (3.08.2013) а нужно на день раньше (2.08.2013)
Файлы копируются все подряд
Нужно именно последние созданные 4 файла
так же нашел вот такой код
Код:

set dir1=[Путь к папке с файлами] set dir2=[Путь к папке для размещения копий] setlocal enabledelayedexpansion set /a num=0 set /a err=0 for /f "tokens=* delims=" %%i in ('dir /b /o:-d /t:W "%dir1%\*.*"') do ( set /a num+=1 if /i !num! leq [количество копируемых файлов] ( copy "%dir1%\%%i" "%dir2%\" > nul if errorlevel 1 (echo %%i >> errorslog.txt set /a err+=1 ) echo copy file...%%i) else ( echo skip file... %%i ) ) echo COUNT OF ERRORS: %err% pause
Описание кода: В квадратные скобки необходимо подставить реальные значения.
Директива setlocal enabledelayedexpansion включает режим отложенного расширения переменных, который позволяет сделать изменения счетчика num видимым внутри цикла (по умолчанию это не так).
Команда dir /b /o:-d /t:W "%dir1%\*.*" определяет порядок копирования файлов. В данном случае первым будет самый новый файл. При помощи других ключей команды dir можно задать другие условия.

Как быть, помогите :help:

sunnykey 03-08-2013 14:13 2195662

Код:

#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
#перемеменная OlderThan отвечает за разницу дней от текущей даты
$SourcePath="D:\1"
$DestinationPath="\\SERVER-1\Obmen\"
$OlderThan=New-TimeSpan -Days 1
$Yesterday=Get-Date -Date ((Get-Date)-$OlderThan) -Format dd.MM.yyyy
New-Item "${DestinationPath}\${Yesterday}" -ItemType Directory
if (-not (Test-Path -Path "${DestinationPath}\${Yesterday}")) {
    "Ошибка создания папки"
    return
}
Get-ChildItem $SourcePath | `
    Where-Object {$_.Attributes -ne [System.IO.FileAttributes]::Directory} | `
    Sort-Object -Property CreationTime -Descending | `
    Select-Object -First 4 | `
    Copy-Item -Destination "${DestinationPath}\${Yesterday}" -Force


salmans 05-08-2013 21:39 2196878

:clapping: Большое спасибо!!!)все заработало) пришлось повозиться с PowerShell на WS2003

Iska 05-08-2013 22:31 2196910

Цитата:

Цитата salmans
пришлось повозиться с PowerShell на WS2003 »

А что там особенного такого на «WS2003»?

salmans 06-08-2013 02:40 2196982

да поставить поставил а разрешение ны выполнение скрипта не активировалось никак( пока обновление небольшое не поставил не заработало)

Iska 06-08-2013 03:01 2196985

Как именно пытались разрешить исполнение скриптов? И что за обновление?


Время: 22:42.

Время: 22:42.
© OSzone.net 2001-