Doppelte If Anweisung - check if file exist

Mitglied: chkdsk

chkdsk (Level 1) - Jetzt verbinden

05.08.2020, aktualisiert 14:41 Uhr, 458 Aufrufe, 14 Kommentare

Hello Again

Ich habe hier ein Skript, welches zu zu Beginn überprüft ob eine Datei vorhanden ist. Falls ja, soll im Nächsten Schritt überprüft werden, ob eine andere Datei vorhanden ist. Falls ja soll weiter gemacht werden. Ist die zweite Datei nicht vorhanden, soll das Skript beenden, genauso wenn die erste Datei nicht vorhanden ist.
Im Anhang mein Skript. Es läuft sauber durch, wenn ich die zweite check if file exist Anweisung raus nehme. Habe ich eine Klammer falsch gesetzt?

Mitglied: TheAggy
05.08.2020, aktualisiert um 15:17 Uhr
Hallo chkdsk,

dir fehlt in Zeile 6 die zu öffnende Klammer nach dem if und dadurch eine schließende vor dem ersten else, wenn ich es richtig gesehen habe. Als kleinen Tipp um solche Fehler zu vermeiden sind Einrückungen zu verwenden. Könnte Beispielsweise dann so ausehen:
Bitte warten ..
Mitglied: TK1987
05.08.2020 um 16:44 Uhr
Moin,

@TheAggy: jetzt hast du aber dafür den else-Befehl mit dem "running" falsch gesetzt, der gehört laut dem TO zu dem If-Befehl eine Ebene drunter.

Zitat von chkdsk:
Falls ja soll weiter gemacht werden. Ist die zweite Datei nicht vorhanden, soll das Skript beenden, genauso wenn die erste Datei nicht vorhanden ist.
@chkdsk: Warum dann überhaupt 2 If-Verzweigungen?! Prüf doch gleich, ob beide Dateien vorhanden sind...
Gruß Thomas
Bitte warten ..
Mitglied: chkdsk
06.08.2020, aktualisiert um 07:40 Uhr
@chkdsk: Warum dann überhaupt 2 If-Verzweigungen?! Prüf doch gleich, ob beide Dateien vorhanden sind...
Gruß Thomas

Hab ich auch schon probiert, allerdings sagt er mir dann gleich "trigger1.txt not exist" obwohl die Datei vorhanden ist. Er geht also gar nicht erst in die erste if Abfrage

Bitte warten ..
Mitglied: TK1987
06.08.2020, aktualisiert um 10:40 Uhr
Zitat von chkdsk:
Hab ich auch schon probiert, allerdings sagt er mir dann gleich "trigger1.txt not exist" obwohl die Datei vorhanden ist.
Weil die else-Anweisung dann auch falsch definiert ist. Er springt dann zu else, wenn $Path oder $Path2 nicht existieren, also muss in else auch etwas wie
stehen.

Wenn du hingegen anzeigen willst, welche Datei genau fehlt, würde ich hier einen noch anderen Ansatz wählen:
Bitte warten ..
Mitglied: chkdsk
06.08.2020, aktualisiert um 10:42 Uhr
Ich muss mich korrigieren. Ich sehe gerade ich hab in meinem ersten Post etwas falsch erklärt Sorry für das ganze WirrWarr BlameOnMe

1. Das Skript startet und überprüft ob Datei 1 vorhanden ist. Ist diese vorhanden, gehts zu Schritt 2. Ist Datei 1 nicht vorhanden soll sich das Skript beenden.
2. Das Skript überprüft ob die Datei 2 vorhanden ist. Ist Datei 2 vorhanden, soll sich das Skript beenden, ist Datei 2 nicht vorhanden gehts weiter zu Schritt 3.
3. Das Skript guckt ob ein Programm X läuft. Falls JA soll es das Programm beenden und Datei 3 in einen Ordner kopieren. Falls Programm X nicht läuft, soll es Datei 3 gleich kopieren.

Ich hoffe ich konnte mich verständlich ausdrücken
Bitte warten ..
Mitglied: TK1987
06.08.2020 um 11:05 Uhr
Schon klar - und genau dafür hat dir @TheAggy ja schon die Lösung gepostet. Du muss da nur wie bereits erwähnt die zweite else-Anweisung wieder an den richtigen Platz schieben. Sprich Zeile 17 runter schieben hinter Zeile 26.

Aber genau das ist der Punkt, an dem ich mein Verständnisproblem habe: Schritt 1 und Schritt 2 machen vom Prinzip her genau das selbe - wieso also nicht die Effizienz erhöhen, indem man das Ganze zu einem einzigen Schritt zusammenfügt?!
Bitte warten ..
Mitglied: chkdsk
06.08.2020 um 11:10 Uhr
Ich gucke mir das Skript gleich nochmal an. Vielleicht hab ich die Klammer nur falsch gesetzt.





Zitat von TK1987:

Aber genau das ist der Punkt, an dem ich mein Verständnisproblem habe: Schritt 1 und Schritt 2 machen vom Prinzip her genau das selbe - wieso also nicht die Effizienz erhöhen, indem man das Ganze zu einem einzigen Schritt zusammenfügt?!

Das Problem ist ja, dass wenn Datei 1 und Datei 2 nicht vorhanden sind, das Skript beendet wird. Er soll aber zu Schritt 3 springen wenn Datei 2 nicht vorhanden ist
Bitte warten ..
Mitglied: TK1987
06.08.2020, aktualisiert um 11:23 Uhr
Zitat von chkdsk:
Das Problem ist ja, dass wenn Datei 1 und Datei 2 nicht vorhanden sind, das Skript beendet wird. Er soll aber zu Schritt 3 springen wenn Datei 2 nicht vorhanden ist
Na in dem Fall:
Das Ausrufezeichen vor dem 2. Test-Path negiert die Überprüfung.
Bitte warten ..
Mitglied: chkdsk
06.08.2020, aktualisiert um 11:30 Uhr
Hab ich Tomaten auf den Augen?
Ich habe jetzt folgendes...

Er Kopiert die Datei in der Copy-Item Anweisung aber trotzdem, auch wenn Trigger 2 vorhanden ist. Aber das soll er ja nicht.
Bitte warten ..
Mitglied: TK1987
06.08.2020, aktualisiert um 11:39 Uhr
Zeigt der keinen Fehler an?! Du hast eine schließende Klammer (Zeile 16) zu viel. Die Else-Anweisung gehört ja zu dem zweiten If-Befehl.
Bitte warten ..
Mitglied: chkdsk
06.08.2020 um 11:53 Uhr
Das Skript lief ohne Fehler. Auch wenn ich die doppelten Klammern wegnehme, kopiert er die Dateien in der Copy-Item Anweisung auch wenn Trigger 2 vorhanden ist. Das Skript soll sich aber beenden.
Bitte warten ..
Mitglied: TK1987
06.08.2020, aktualisiert um 12:37 Uhr
Dann machst du eindeutig etwas falsch. Habe das Skript welches ich oben gepostet habe getestet - funktioniert genau wie gewünscht.
Bitte warten ..
Mitglied: chkdsk
07.08.2020 um 07:35 Uhr
Gerade eben noch einmal getestet. Nachwievor (siehe Skript oben) werden die Dateien im Schritt 3 kopiert, obwohl Trigger 2 vorhanden ist. Ich sehe es live im Explorer am Änderungsdatum der Datei, dass diese nach dem Ausführen des Skripts überschrieben werden.
Bitte warten ..
Mitglied: TK1987
07.08.2020, aktualisiert um 11:32 Uhr
Nachwievor: Dann machst du etwas falsch!
Du hast doch eine Konsole - ist nicht so schwer ein paar Tests durchzuführen, um zu überprpüfen, wo bei dir der Fehler liegt. Pfadangabe falsch, sodass die Datei doch nicht existiert... etc

Oder man macht es zur Not halt für ganz blöde und schreibt das Skript so um, dass es nichts weiter tut, als einem anzuzeigen, wann welcher Fall eintritt...
Bitte warten ..
Ähnliche Inhalte
VB for Applications
If exist - if not exist in .vbs - Datei
gelöst Frage von Komoran12VB for Applications24 Kommentare

Moin, moin, vielleicht hat jemand ja einen Tipp für mich. Mit nachfolgender .vbs lasse ich mir einen Messagebox ausgeben: ...

Batch & Shell
Schleife mit Exist
gelöst Frage von casi4711Batch & Shell18 Kommentare

Hallo an alles fleißigen Scripter, ein Script soll eine Range von IPs abfragen und checken, ob ein bestimmtes Verzeichnis ...

Monitoring
Check mk Überwachung
gelöst Frage von JudgelgMonitoring6 Kommentare

Guten Morgen, ich weiß nicht ob ich diesem Thread richtig bin, aber ich stelle dennoch meine Frage. Wir setzen ...

Hardware
Doppelt geklickt trotz Singleclick
gelöst Frage von honeybeeHardware6 Kommentare

Hallo, ich habe auf einem Tablet-PC was komisches festgestellt: Wenn ich mit einer normalen kabelgebundenen Maus auf einen Button ...

Windows Server
GPOs werden doppelt angezeigt
Frage von gamerffWindows Server1 Kommentar

Hallo zusammen, wir haben bei uns das Problem das Gruppenrichtlinien doppelt angezeigt werden wen man gpresult -r ausführt. Angewendete ...

Entwicklung
Powershell CSV Blacklist Check
Frage von davidkrauseEntwicklung1 Kommentar

Guten Abend zusammen, ich benötige eure Unterstützung. Ich möchte ein Powershell Skript laufen lassen, welches eine bestehende CSV gegen ...

Heiß diskutierte Inhalte
Notebook & Zubehör
Macbook oder Surface Book 3?
gelöst Frage von FamousDex089Notebook & Zubehör36 Kommentare

Hallo Zusammen :-), ich bin komplett neu in der IT Admin schiene und neu in diesem Forum. Ich habe ...

Outlook & Mail
Outlook App auf Android
gelöst Frage von PeterGygerOutlook & Mail21 Kommentare

Hallo Folgende Situation: Samsung S3 Samsung S5 Mini Die Microsoft Outlook App kann nicht mehr gestartet werden. Es waren ...

Humor (lol)
So eine Art Jobangebot
Frage von Melvin.van.HorneHumor (lol)18 Kommentare

Moin, ich habe eben eine Zeit damit zugebracht eine GPO für eine Gruppe von Clients zu erstellen. Egal was ...

Switche und Hubs
Kaufberatung (10G) Switche für Unternehmensnetzwerk
Frage von ipzipzapSwitche und Hubs17 Kommentare

Moin, unsere Firma zieht um und am neu renovierten Standort muss/soll alles neu. Auf drei Etagen stehen Racks, in ...

SAN, NAS, DAS
Probleme mit der GIGABIT Leitung - Finden der Krücke - Wer ist schuld ?
gelöst Frage von daswinimramSAN, NAS, DAS16 Kommentare

Hallo Community , folgender Aufbau : "erfolgreich" umgestellt auf Gigabit Tarif am 26.09.20 Speedtests wurden von allen PCs hinter ...

Windows Server
AD (virtualisiert) und alle angeschlossenen Clients fahren ungeplant herunter
Frage von tobitobsnWindows Server16 Kommentare

Ich habe aktuell ein Problem, dass ein frisch aufgesetzer Hyper-V mit einem virtualisierten AD regelmäßig 1x die Woche herunterfährt ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT