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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Копирование с проверкой на наличие файла и последующее его копирование. (http://forum.oszone.net/showthread.php?t=345770)

tubxtru 08-07-2020 09:40 2927633

Копирование с проверкой на наличие файла и последующее его копирование.
 
Ребят уже весь интернет прошарил на поиски своей проблемы. Ситуация такая: Идет копирование документа war.txt из C:\1 в C:\2 при этом если файл с таким именем уже существует в C:\2, то копирование происходит в C:\3. Было бы идеально если бы писался лог начала копирования и окончания копирования. Надеюсь на вашу помощь! Желательно на повершел.

tubxtru 21-07-2020 05:10 2928801

$VMName ="скрипт"
$log ="C:\Scripts\logs\" + $VMName+ ".log"
$data = Get-Date -Format "dddd MM/dd/yyyy HH:mm"
$VMName+" --- START --- "+$data >> $log
if (-not (Test-Path -Path "\\it9\MSI\*"))
{
Copy-Item -Path "C:\дворф\*" -Destination "\\it9\MSI\" -Recurse -Force -Verbose
}
else {
Copy-Item -Path "C:\дворф\*" -Destination "C:\1" -Recurse -Force -Verbose
}
#===================================
$data = Get-Date -Format "dddd MM/dd/yyyy HH:mm"
$VMName+" --- FINISH --- "+$data >> $log

YuS_2 21-07-2020 09:20 2928813

Цитата:

Цитата tubxtru
Надеюсь на вашу помощь! Желательно на повершел. »

Разделом немного ошиблись, потому и не ответил никто...
Вообще, условия в задаче не совсем полные.
Цитата:

Цитата tubxtru
Идет копирование документа war.txt из C:\1 в C:\2 при этом если файл с таким именем уже существует в C:\2, то копирование происходит в C:\3. Было бы идеально если бы писался лог начала копирования и окончания копирования. »

Какие действия должны предприниматься если файл с таким именем существует и в C:\2, и в C:\3?
1. Не копировать совсем.
2. Копировать с переименованием в C:\2
3. Копировать с переименованием в C:\3
И ещё: зачем вести лог копирования, если по Вашим условиям, файл может быт скопирован только два раза, то бишь, для чего такая автоматизация?

tubxtru 27-10-2020 05:09 2937692

Цитата:

Цитата YuS_2
Какие действия должны предприниматься если файл с таким именем существует и в C:\2, и в C:\3?
1. Не копировать совсем.
2. Копировать с переименованием в C:\2
3. Копировать с переименованием в C:\3
И ещё: зачем вести лог копирования, если по Вашим условиям, файл может быт скопирован только два раза, то бишь, для чего такая автоматизация? »


Простите пожалуйста за столь долгий ответ. Т.к. я вообще не бум бум в написании скриптов и пришлось учиться самостоятельно. В итоге я переделал скрипт и выглядит он вот так:


#---задаем имя машины и каталоги резервного копирования, каталог логирования, записываем время начала. Недельный!!!!
$VMName ="Chili"
$log ="C:\Scripts\logs\" + $VMName+ ".log"
$data = Get-Date -Format "dddd MM/dd/yyyy HH:mm"
$VMName+" --- START --- "+$data >> $log

#Путь к папке (конечная)
$papka1 = "\\backup\e$\Chili"
$papka2 = "\\nautilus\e$\Chili"

#Источник
$istochnik = "\\0,0,0,0\backup\"


#Выбор папки по последним датам (конечная)
$IshDate1 = (Get-Item \\backup\e$\Chili).LastWriteTime -le (Get-Item \\nautilus\e$\Chili).LastWriteTime
$IshDate2 = (Get-Item \\backup\e$\Chili).LastWriteTime -ge (Get-Item \\nautilus\e$\Chili).LastWriteTime


if ($IshDate1 -ne "True" -and $IshDate2 -eq "True")
{
robocopy "$istochnik" "$papka2" /MIR #делаем синхронизацию
}

elseif ($IshDate1 -eq "True" -and $IshDate2 -ne "True")
{
robocopy "$istochnik" "$papka1" /MIR
}

elseif ($IshDate1 -eq "True" -and $IshDate2 -eq "True")
{
robocopy "$istochnik" "$papka1" /MIR
}

elseif ($IshDate1 -ne "True" -and $IshDate2 -ne "True")
{
robocopy "$istochnik" "$papka1" /MIR
}

#===================================
$data = Get-Date -Format "dddd MM/dd/yyyy HH:mm"
$VMName+" --- FINISH --- "+$data >> $log

tubxtru 27-10-2020 05:53 2937694

данный скрип рабочий и применяется на работе.


Время: 00:46.

Время: 00:46.
© OSzone.net 2001-