Начну с того, что я действительно не знаю powershell. Я инженер по автоматизации фармацевтических процессов, поэтому мой опыт — программирование ПЛК и проектирование HMI. Я писал на разных языках, но я ни в коем случае не программист. Но именно здесь мы оказываемся, пытаясь написать код для необходимого решения, и никто другой не знает, как это сделать.
У меня есть две папки. Одна с неограниченными разрешениями NTFS, а другая с разрешениями только на чтение для всех, кроме группы локальных администраторов. Мне нужно скопировать файлы из неограниченной папки в папку с разрешениями только на чтение. Я собирался использовать robocopy, но мне нужно увеличить имена файлов, если они существуют в месте назначения с тем же именем, но (разной) временной меткой, и не копировать их, если временная метка та же. Robocopy не может этого сделать.
Я нашел пример скрипта, который работает для приращения, но не учитывает временную метку, проблема в том, что я использую планировщик задач для запуска этого скрипта каждый раз при печати PDF. Скрипт перемещает напечатанный PDF из одной папки в другую, но текущий скрипт будет продолжать создавать новые копии с увеличивающейся нумерацией каждый раз при запуске. Это не сработает для того, что мне нужно. Я недостаточно хорошо знаю PowerShell, чтобы понять, как заставить его учитывать временную метку и увеличивать файлы с разными временными метками и игнорировать файлы с одинаковыми.
Вот сценарий, который у меня есть на данный момент:
function fcopy ($SourceDir,$DestinationDir)
{
Get-ChildItem $SourceDir -Recurse | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object ($_) {
$SourceFile = $_.FullName
$DestinationFile = $DestinationDir + $_
if (Test-Path $DestinationFile) {
$i = 0
while (Test-Path $DestinationFile) {
$i += 1
$DestinationFile = $DestinationDir + $_.basename + $i + $_.extension
}
} else {
Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
}
Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
}
}
fcopy -SourceDir "C:\SoloVPE\UV1325A_Reports\" -DestinationDir "C:\UV1325A_Reports_Share\"