Lassen Sie mich zunächst sagen, dass ich Powershell wirklich nicht kenne. Ich bin ein Pharma-Prozessautomatisierungsingenieur, meine Erfahrung liegt also in der Programmierung von SPS und HMI-Design. Ich habe alle möglichen Sprachen geschrieben, aber ich bin auf keinen Fall ein Programmierer. Aber hier befinden wir uns nun: Wir versuchen, Code für eine Lösung zu schreiben, die benötigt wird, und niemand sonst weiß, wie es geht.
Ich habe zwei Ordner. Einen mit uneingeschränkten NTFS-Berechtigungen und einen mit Nur-Lese-Berechtigungen für alle außer der lokalen Administratorgruppe. Ich muss Dateien aus dem uneingeschränkten Ordner in den mit Nur-Lese-Berechtigungen kopieren. Ich wollte Robocopy verwenden, aber ich muss die Dateinamen erhöhen, wenn sie im Ziel mit demselben Namen, aber (anderem) Zeitstempel vorhanden sind, und sie nicht kopieren, wenn der Zeitstempel derselbe ist. Robocopy kann das nicht.
Ich habe ein Beispielskript gefunden, das für die Inkrementierung funktioniert, aber den Zeitstempel nicht berücksichtigt. Das Problem besteht darin, dass ich den Taskplaner verwende, um dieses Skript jedes Mal auszulösen, wenn eine PDF-Datei gedruckt wird. Das Skript verschiebt die gedruckte PDF-Datei von einem Ordner in den anderen, aber das aktuelle Skript erstellt bei jeder Ausführung neue Kopien mit inkrementierter Nummerierung. Das funktioniert für das, was ich brauche, nicht. Ich kenne mich mit Powershell nicht gut genug aus, um herauszufinden, wie ich es dazu bringen kann, den Zeitstempel zu berücksichtigen und Dateien mit unterschiedlichen Zeitstempeln zu inkrementieren und solche mit demselben zu ignorieren.
Hier ist das Skript, das ich bisher habe:
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\"