Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Odner auf Inhalt untersuchen und dann die Dateien verschieben

$
0
0

Hallo zusammen.

Ich habe folgendes Problem. Ich habe mir ein Powershell Script geschrieben, welches einen Eingangsorder auf Dateien check um danach aus der einen Datei (HL7) einen eindeutigen Zweitstempel extrahiert und die dazugehörige PDF mit genau diesen Wert umbenennt. Danach sollen beide Dateien in einen anderen Ordner verschobene werden. Habe das in eine Schleife gepackt, damit der Eingangsordner alle 4 Sec auf Inhalt überprüft wird. Das funktioniert ansich auch gut.

Damit dies bei einem Serverneustart auch automatisch geladen wird, habe ich einen Windows Dienst gebaut, der das Script im Hintergrund startet. 

Mein Problem ist aber, dass das der Dienst sich aufhängt, wenn das Script einen leeren Eingangsorder vorfindet. Dann kommt folgende Fehlermeldung.

"Es ist nicht möglich , eine Methode für einen Ausdruck aufzurufen, der den Wert NULL hat"

$quellverzeichnis = "C:\Temp\in"
$zielverzeichnis = "C:\TEMP\kopiert"
$dateityp1 = "*.hl7"
$dateityp2 = "*.pdf"

if (Test-Path $quellverzeichnis)
{
	while (1 -eq 1)
	{
		$files = Get-ChildItem $quellverzeichnis
	
		if ($files.Count -gt 0)
			{
		
			# Erste Zeile aus der Datei lesen und ab Position 77 die 18 Stellen anzeigen
			$wert = (Get-Content $quellverzeichnis\$dateityp1 -TotalCount 1).Substring(76, 17)
			
			# erstelle den PDF Namen mit dem Inhalt des Wertes
			Get-ChildItem -Path $quellverzeichnis\$dateityp2 | Rename-Item -NewName { $wert + ".pdf" }
			# koppiere die HL7 + PDF in das Zielverzeichnis
			Move-Item -Path "$quellverzeichnis\$dateityp1" -Destination $zielverzeichnis
			Move-Item -Path "$quellverzeichnis\$dateityp2" -Destination $zielverzeichnis
			start-sleep -seconds 4
		}
	else
	{
		Write-Host "Es wurden keine Dateien gefunden."
	}
	}
}
else
{
	Write-Host "Der Ordnerpfad existiert nicht."
}

Also ich möchte gern einfach einen Windows Dienst, der dieses Script startet, welches alle 4 Sekunden auf einen Ordner schaut, ob diese Zwei Dateien drin liegen. Es ist zeitlich unterschiedlich, wann die Dateien in den Eingangsordner eintreffen. 

Wo muss ich das Script verändern, dass es keinen Fehler mehr wirft. Das Windows System Logging wird ja ebenfalls zugemüllt.

Hätte da wer einen Verbesserungsvorschlag?

Danke...



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>