If befehle richtig ausführen

Mitglied: Nxtrex

Nxtrex (Level 1) - Jetzt verbinden

19.01.2021, aktualisiert 10:12 Uhr, 605 Aufrufe, 10 Kommentare

Hallo,

ich habe ein Script gebaut, dass 3 Dateien auslesen soll und nach dem entsprechenden Inhalt nur diese 3 Dateien löschen soll.
Ich habe schon ein wenig gebastelt, jedoch funktioniert das ganze nicht wirklich.
Bitte um Unterstützung.

Hier das Script:

$Dateien=get-childitem c:\Location\test2
foreach($Datei in $Dateien){

$file = Get-Content c:\Location\test2\$Datei
$containsWord1 = $file1 | %{$_ -match "BMG-Lagerbestand"}
$containsWord2 = $file2 | %{$_ -match "BMG-Materialbelege"}
$containsWord3 = $file3 | %{$_ -match "BMG-Lieferungen"}

if ($containsWord1 -contains $true) {
{remove-item c:\Location\test2\$file1}

if ($containsWord2 -contains $true)
{remove-item c:\Location\test2\$file2}

if ($containsWord3 -contains $true)
{remove-item c:\Location\test2\$file3}

else {[System.Windows.Forms.MessageBox]::Show("Error","Error",0)}

}

}


Vorab vielen Dank.

MfG

Nick
Mitglied: Doskias
19.01.2021, aktualisiert um 10:15 Uhr
Moin
Zitat von @Nxtrex:
ich habe ein Script gebaut, dass 3 Dateien auslesen soll und nach dem entsprechenden Inhalt nur diese 3 Dateien löschen soll.
Ich habe schon ein wenig gebastelt, jedoch funktioniert das ganze nicht wirklich.

Ich hab ein wenig überlegt aber irgendwie finde ich keinen Anhaltspunkt. Es wäre Hilfreich wenn du sagst was nicht funktioniert. Löscht er alles? löscht er gar nichts? Bekommst du eine Fehlermeldung? Malt er bunte Kreise?

Bitte um Unterstützung.

Bitte um mehr Informationen :) face-smile

Gruß
Doskias

PS: Code-Klammern sind nützlich, dann können wir die sagen in welcher Zeile dein Fehler sich versteckt, wenn man ihn gefunden hat.
Bitte warten ..
Mitglied: Nxtrex
19.01.2021 um 10:17 Uhr
Hallo,

er löscht garnichts.
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
19.01.2021, aktualisiert um 10:32 Uhr
Da ist so ziemlich alles falsch was man falsch machen kann ;-) face-wink.
Dafür genügt ein Einzeiler ...
Bitte warten ..
Mitglied: Doskias
19.01.2021, aktualisiert um 10:38 Uhr
Wenn man es nicht als Einzeiler möchte, würde ich es wie folgt lösen:
ggf. nochmal eine IF-Abfrage einbauen, damit die Schleife unterbrochen wird, wenn die Datei gelöscht wurde. Sonst gibt es Fehlermeldungen wenn der Inhalt verglichen wird nachdem die Datei gelöscht wurde.

Gruß
Doskias

@jokari: Ich denke bei dem Ausgangsskript was der TO hier gepostet hat, wird er den Einzeiler nicht verstehen und daraus aus nichts lernen (können)
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
19.01.2021, aktualisiert um 10:48 Uhr
if ((get-content c:\Location\test2\$Datei) -contains $wert)
Das funktioniert so aber nicht wenn die Zeilen noch anderen Text enthalten. Der Grund: -Contains prüft keine Teilstrings sondern nur ein bestehendes Array auf eine" exakte Übereinstimmung" eines Items.
wird er den Einzeiler nicht verstehen und daraus aus nichts lernen (können)
Braucht er nur nachschlagen. Handbücher lesen und Google bedienen ist natürlich Voraussetzung.
Bitte warten ..
Mitglied: Doskias
LÖSUNG 19.01.2021, aktualisiert um 10:50 Uhr
Dann halt so:
Hab die Reihenfolge der Werte und Dateien nochmal getauscht, damit spielt es keine Rolle wie viele Dateien im Verzeichnis sind und die if-Abfrage eingebaut. Und wenn er contains nicht selbst durch match ersetzen kann, empfehle ich ein Buch :) face-smile
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
19.01.2021, aktualisiert um 10:51 Uhr
-match $wert
Hier sollte man aber darauf hinweisen das -Match per Default mit regulären Ausdrücken arbeitet, wenn er also dort mit Sonderzeichen hantiert und nicht per [regex]::escape($wert) arbeitet und das nicht weiß geht das schnell in die Hose ;-) face-wink.
Bitte warten ..
Mitglied: Doskias
19.01.2021 um 10:52 Uhr
Ich bin jetzt von den drei Begriffen ausgegangen, die oben genannt wurden
Bitte warten ..
Mitglied: Nxtrex
19.01.2021 um 10:59 Uhr
Hallo,

er schmeißt mir zwar Unmengen an Fehlermeldungen raus aber es funktioniert.

Danke :D
Bitte warten ..
Mitglied: Doskias
19.01.2021 um 11:17 Uhr
Also bei mir kam keine Fehlermeldung mehr nach meinem Test. Egal was die Meldungen besagen. Die sollte man beheben :) face-smile
Bitte warten ..
Heiß diskutierte Inhalte
Linux
Installation Grammm Server
smeclntVor 1 TagFrageLinux13 Kommentare

Hallo zusammen, meine Linux Kenntnisse sind sehr rudimentär trotzdem suche ich eigentlich ständig nach einer Alternative zu MS Exchange. Bis jetzt gab es nichts ...

Switche und Hubs
Probleme im Netzwerk Switche teilweise nicht erreichbar
hukimanVor 9 StundenFrageSwitche und Hubs29 Kommentare

Guten Morgen, seit Monaten haben wir hier immer wieder Probleme mit dem Netzwerk, das Problem konnte ich leider aber noch immer nicht finden. Es ...

Erkennung und -Abwehr
Einer Malware auf der Spur. Benötige Sherlock Holmes!
streamVor 21 StundenFrageErkennung und -Abwehr7 Kommentare

Guten Abend Wenn ich meine Windows-10-Kiste starte, so gibt mir mein Router eine Meldung aus, dass eine bestimmte IP-Adresse wegen Bösartigkeit geblockt wurde. Auf ...

Windows 10
Windows 10 interes Mikro ohne Funktion
TPH125Vor 1 TagFrageWindows 1011 Kommentare

Hallo zusammen, Ich verzweifelt bald. Besitze einen Medion Akoya MD 97110. Habe Windows 10 installiert, seit dem funktioniert das inigrierte Mikrofon nicht mehr. Gerät ...

Batch & Shell
Tabellarische Ausgabe der Netzwerkschnittstellen
gelöst dysti99Vor 8 StundenFrageBatch & Shell18 Kommentare

Mit - ip a - werden ja die Netzwerkschnittstellen angezeigt. Ich möchte mit ein Batchscript folgende Ausgabe erreichen: 1 eth0 192.168.1.1 AD:13:67:56:14:D1 2 eth1 ...

Festplatten, SSD, Raid
(USB) Festplatten laut ?
TomEngelVor 1 TagFrageFestplatten, SSD, Raid6 Kommentare

Ich grüsse Sie Alle. Eine Frage eines engagierten Laien Habe mehrere 3,5 " Festplatte. Einige schon recht alt 8 Jahre, andere ca 2-3 jahre ...

Ubuntu
Mailserver Test Provider IP
gelöst it-blzVor 1 TagFrageUbuntu9 Kommentare

Hallo, ist es möglich einen "Mailserver" (Imap + smtp) in einer Virtual Box mit einer Provider IP (dynamisch - ist allerdings konstant) zu testen? ...

Linux Netzwerk
SAMBA FS Portfreigabe
Jannik2018Vor 23 StundenFrageLinux Netzwerk17 Kommentare

Hallo zusammen, ich habe eine Portfreigabe für meinen SAMBA Server mit Netzwerkfreigaben auf port 445 TCP eingerichtet allerdings wenn ich per DNS oder externer ...