Jump to content

PS: Datei auslesen und nach Kriterium verschieben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi Leute,

ich versuche mich gerade mit Powershell und stehe etwas auf dem Schlauch.

Brauche etwas Unterstützung bzw. eure Fachkompetenz.

 

Folgendes Szenario:

In einem Ordner liegen mehrere XML-Dateien. In diesen Dateien gibt es das Element CompCode.

Anhand der CompCode-Nummer (1001 oder 1019) soll die Datei entweder in einen anderen Ordner verschoben werden oder nicht. Das Ganze soll dann auch Zeitabhängig geschehen. Für die CompCodes gibt es unterschiedliche Verarbeitungszeitspannen. (Soweit bin ich aber noch nicht. Ich versuche Stückweise meinem eigentlichen Ziel näher zu kommen.)

 

Ich möchte also in die Dateien gucken und herausfinden, welcher CompCode drin steht. Wenn jetzt z.B. 1001 drin steht, soll diese in den Ordner "Move" verschoben werden, wenn nicht, soll sie bleiben wo sie ist.

In meinem Ansatz, werden alle Dateien verschoben...
 
Damit ich testen kann, habe ich jetzt anstelle des move Befehls eine Textausgabe erstellt.
cd d:\check
$source = "d:\check\*.xml"
$srcstrg = gci $source
$destination = "d:\check\move\"
# $uhrzeit = get-date -Format 'HH:mm' 
$CC1 = "<CompCode>1001</CompCode>"
$CC2 = "<CompCode>1019</CompCode>"
$string = Get-ChildItem $source | Select-String -pattern "$CC1"
foreach ($file in $srcstrg)
{

if ($string -Match "$CC1") {write-host "wird verschoben"}
   else
    {write-host "wird nicht verschoben"}

}

wird verschoben
wird verschoben
wird verschoben
wird verschoben

Man sollte meinen, es ist eine simple Aufgabe, aber ich breche mir gerade ziemlich einen ab :(

 

Bin für jeden Tipp dankbar!

 

Grüße

Link zu diesem Kommentar

Hi und danke für die richtigen Gedankengänge!

 

@daabm: Warum muss ich?

 

So scheint es zu funktionieren:

cd d:\check
$source = "d:\check\*.xml"
$srcstrg = gci $source
$destination = "d:\check\move\"
$uhrzeit = get-date -Format 'HH:mm' 
$CC1 = "<CompCode>1001</CompCode>"
$CC2 = "<CompCode>1019</CompCode>"

foreach ($file in $srcstrg)
{
$result = Get-ChildItem $file | Select-String -pattern "$CC1"
if ($result -Match "$CC1") {move-item $file $destination}
   else
    {write-host "nothing to do"}

}

Jetzt taste ich mich langsam ran, dies Zeitabhängig zu machen. Werde bestimmt wieder auf euch Cracks zurückkommen :)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...