Показать полную графическую версию : Скрипт для переноса файлов по заданным параметрам
Kakazabr
26-04-2016, 21:41
Здравствуйте, появилась задача написать скрипт...
Помогите пожалуйста в решении задачки. Мое знакомство с PS состоялось не так давно, и знаний недостаточно...
greg zakharov
27-04-2016, 09:28
Например (PowerShell v5):
param(
[Parameter(Mandatory=$true, Position=0)]
[ValidateScript({Test-Path $_})]
[ValidateNotNullOrEmpty()]
[String]$From,
[Parameter(Mandatory=$true, Position=1)]
[ValidateScript({Test-Path $_})]
[ValidateNotNullOrEmpty()]
[String]$To
)
begin {
function private:Get-UniqueName {
[GUID]::NewGuid() -replace '-', ''
}
function private:Find-Criteria([String]$Path) {
(Get-ChildItem $Path -File -Recurse).Where{
[Math]::Floor($_.Length / 1Kb) -gt 200 -and `
((Get-Date) - $_.CreationTime).Days -gt 60
} | Select-Object -ExpandProperty FullName
}
}
process {
(Find-Criteria $From).ForEach{
Copy-Item $_ "$To\$(Get-UniqueName)$(
[IO.Path]::GetExtension($_)
)" -Verbose 4>&1 | Tee-Object "$pwd\log.txt" -Append
}
}
greg zakharov
27-04-2016, 12:25
$dest = 'C:\MyPath'
ls -fi *.txt|?{((date)-$_.CreationTime).Days -gt 60 -and $_.Length -gt 10kb}|%{mi $_.FullName "$dest\$(date -U %Y-%m-%d)_$($_.Name)"}
Kakazabr
27-04-2016, 15:49
Спасибо большое! Заработало.
Остался последний штрих... Производить логирование. Out-File не срабатывает. Где-то слышал, что у Move есть ключик на вывод...
Или может быть подскажите более простой способ записывать лог в файл?
greg zakharov
27-04-2016, 16:29
Во-первых
PS C:\> man Out-File
Во-вторых
PS C:\> man Tee-Object
В-третьих
PS C:\> man about_Redirection
В-четвертых, какая версия PowerShell?
Kakazabr
27-04-2016, 16:34
PowerShell 4 версии
greg zakharov
27-04-2016, 16:39
Если четверка, то:
... | %{mi $_.FullName "$dest\$(date -U %Y-%m-%d)_$($_.Name)" -ve 4>&1|tee log.txt -ap}
По-хорошему же вообще следовало бы использовать методы-расширения, вместо альясов ? и %.
По-хорошему же вообще следовало бы использовать »
…и не следовало править задним числом свои сообщения. Kakazabr, зачем убрали задание?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.