Как реализовать скрипт\программу для автоматизации переноса файлов? Доброго времени суток господа.
Дано: папка DANO- внутри нее субпапки, которые являются папками проекта, с файлами внутри.
Требуется: .exe файл, который будет после выполнения забирать вновь созданные файлы 2-х разрешений, например .file и .porject и копировать их в папку C->FOLDER.
При запуске на след день, из папки C->FOLDER будут удаляться старые файлы .file и .project и перемещаться в C->FOLDER->ARCHIVE, а внутри папки ARCHIVE файлы должны сортироваться по ARCHIVE->ГОД->МЕСЯЦ->ДЕНЬ
Я далек от программирования, но изучая вопрос не нашел софта, на котором можно реализовать такую утилитку.
Думал в сторону скрипта powerrshell:#By BigTeddy 05 September 2011
#This script uses the .NET FileSystemWatcher class to monitor file events in folder(s).
#The advantage of this method over using WMI eventing is that this can monitor sub-folders.
#The -Action parameter can contain any valid Powershell commands. I have just included two for example.
#The script can be set to a wildcard filter, and IncludeSubdirectories can be changed to $true.
#You need not subscribe to all three types of event. All three are shown for example.
# Version 1.1
$folder = 'C:\PRIMER' # Enter the root path you want to monitor.
$filter = '*.*' # You can enter a wildcard filter here.
# In the following line, you can change 'IncludeSubdirectories to $true if required.
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
# Here, all three events are registerd. You need only subscribe to events that you need:
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore red
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore white
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
# To stop the monitoring, run the following commands:
# Unregister-Event FileDeleted
# Unregister-Event FileCreated
# Unregister-Event FileChanged
$a=Get-Item ($folder+"\/"+$name)
switch ($a.Extension)
{
'.mp3' {Write-Host "AudioFile"; Copy-Item $a.FullName -Destination d:\test\Audio}
'.txt' {Write-Host "TextFile"; Copy-Item $a.FullName -Destination d:\test\Text}
'.bat' {Write-Host "batchfile"}
}
Но ничего не понимая в программировании трудно что то разобрать.

21 Авг 2019 в 06:22
239 +1
0
Ответы
1

Для реализации автоматизации переноса файлов в вашем случае, вы можете использовать PowerShell скрипт примерно следующего вида:

$sourceFolder = "DANO"
$destinationFolder = "C:\FOLDER"
$archiveFolder = "C:\FOLDER\ARCHIVE"
# Проверяем, что папки назначения существуют, если нет - создаем их
if (-not (Test-Path $destinationFolder)) {
New-Item -ItemType Directory -Force -Path $destinationFolder
}
if (-not (Test-Path $archiveFolder)) {
New-Item -ItemType Directory -Force -Path $archiveFolder
}
# Переносим новые файлы с расширениями .file и .project из папки DANO в папку назначения
Get-ChildItem $sourceFolder -Recurse | Where-Object { $_.Extension -eq ".file" -or $_.Extension -eq ".project" } | ForEach-Object {
Copy-Item $_.FullName -Destination $destinationFolder
}
# Переносим старые файлы из папки назначения в папку архива
Get-ChildItem $destinationFolder | Where-Object { $_.Extension -eq ".file" -or $_.Extension -eq ".project" } | ForEach-Object {
Move-Item $_.FullName -Destination $archiveFolder
# Создаем папки для сортировки по дате
$yearFolder = Join-Path -Path $archiveFolder -ChildPath $_.LastWriteTime.Year
$monthFolder = Join-Path -Path $yearFolder -ChildPath $_.LastWriteTime.ToString("MM")
$dayFolder = Join-Path -Path $monthFolder -ChildPath $_.LastWriteTime.ToString("dd")
if (-not (Test-Path $yearFolder)) {
New-Item -ItemType Directory -Force -Path $yearFolder
}
if (-not (Test-Path $monthFolder)) {
New-Item -ItemType Directory -Force -Path $monthFolder
}
if (-not (Test-Path $dayFolder)) {
New-Item -ItemType Directory -Force -Path $dayFolder
}
Move-Item $_.FullName -Destination $dayFolder
}

Вы можете сохранить этот скрипт в файл с расширением .ps1 и запускать его по расписанию с помощью планировщика задач Windows.

Этот скрипт сначала переносит новые файлы с расширениями .file и .project из папки DANO в папку C:\FOLDER, а затем перемещает старые файлы из папки C:\FOLDER в папку C:\FOLDER\ARCHIVE, сортируя их по дате создания в папках с именами года, месяца и дня.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир