Компьютерный форум 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=194067)

tarasov.evgeny 15-12-2010 16:38 1566546

Копирование файлов за определенную дату
 
Добрый день,

Необходимо скопировать файлы из папки в папку созданные в определенный день
При помощи команды Get-ChildItem | Get-Member нашел свойство в котором можно найти дату создания файла, также нашел, как из даты выдрать только день
(Get-ChilItem - path "c:\folder\file.txt").CreationTime.Day
На выходе получаем день создания - 21, 22, и т.д.
Не могу отфильтровать файлы в папке с только таким значением - например 22, т.е. за 22 число файлы скопировать.

Никак шарик за ролик не завернется, :)

tarasov.evgeny 15-12-2010 16:46 1566552

Ура, шарик за ролик закатился....
Get-ChildItem | Where-Object {$_.CreationTime.Day -like "23"}

tarasov.evgeny 15-12-2010 18:32 1566615

Наваял вот такой скрипт, можно ли его оптимизировать по скорости работы.
Скажем я пытался в команде Get-ChilItem в -Filter запихнуть два значения: *.log, *.ini. Но два он не обрабатывает или я не правильно, что-то написал. Пришлось запихнуть данные в -include ( он субъективно, медленнее работает)
Можно ли не создавать переменную $MM? Там текущий месяц. Если просто подоставить в:
Код:

-and $_.CreationTime.Month -like "(get-date).Month"}
то скрипт ничего не обрабатывает, как-будто в этом месяце не было записей...
Сам скрипт:
Код:

$AddDirectory = Read-Host "Please write name Directory"
New-item "$AddDirectory" -ItemType Directory
Write-Host "$addDirectory was create in current directory"
$MM = (get-date).Month
$AddDay = Read-Host "Please write day then log file was create"
$AddPCName = Read-Host "Please write PC name."
$ArrayPC = $addPCName -split "[,]"
foreach ($1 in $ArrayPC) {
 IF (Test-connection -Quiet -Delay 1 -Count 2 -ErrorAction SilentlyContinue  -ComputerName $1)
 {
 $file = Get-ChildItem \\$1\C$\folder\* -Include *.log, *.ini | '
Where-Object {$_.CreationTime.Day -like "$AddDay" '
-and $_.CreationTime.Month -like "$MM"}
 New-item -Path $AddDirectory -Name $1 -ItemType Directory
 Copy-Item $file -Destination $AddDirectory\$1
 "Компьютер $1 включен. Файлы скопированы." }
 Else {"Компьютер $1 выключен.Создана запись в файл ShutDownPC."
 Add-Content -Path "$AddDirectory\ShutDownPC.txt" -Value "Компьютер $1 выключен"
 }}



Время: 10:45.

Время: 10:45.
© OSzone.net 2001-