우선 저는 Powershell을 전혀 모릅니다. 저는 제약 프로세스 자동화 엔지니어이므로 PLC 및 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\"