stefan4711 3 Geschrieben 30. August 2021 Melden Teilen Geschrieben 30. August 2021 (bearbeitet) Hallo liebe Leute, irgenwie will mich mein Rechner mich veräppeln, ich habe eine simple If Anweisung, die aber im Else Fall einfach rausspringt, und ich weiss nicht warum, vielleicht siehr ja jemand den Fehler. Das Script sieht so aus: @Echo Off CD /D %~dp0 SET "AF=C:\Users\Administrator\Downloads" FOR /f %%a in ('schtasks /query /TN _01_Regwerte_setzen /XML ^| findstr "UserId"') DO ( Set xml=%%a ) set var2=%xml:~8,8% echo %var2% IF %var2%==S-1-5-18 ( ECHO - Aufgabe laeuft bereits unter Systemaccount - Echo Es ist nichts zu machen pause EXIT ) ELSE ( ECHO. ECHO - Aufgabe auf System umtragen pause FOR %%L in ( _01_Regwerte_setzen ) do SCHTASKS /Create /TN %%L /f /xml "%AF%\Aufgaben\%%L.xml">nul 2>&1 pause ) ECHO ALLES erledigt PAUSE EXIT Das Ding ist, vor ein paar Monaten hat diese Logik bei mir noch funktioniert, ich denke wirklich langsam es sind die Updates, die Scripte plötlich nicht mehr funktionieren lassen lg Stefan bearbeitet 30. August 2021 von stefan4711 Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 30. August 2021 Melden Teilen Geschrieben 30. August 2021 (bearbeitet) Moin, was auch immer vor 11 Minuten schrieb stefan4711: die aber im Else Fall einfach rausspringt heißt - ich verstehe die Fehlerbeschreibung nicht. Ferner verstehe ich nicht, was du da eigentlich machst. Es wäre hilfreich, gäbest du an, was du denn eigentlich erreichen willst. Was mir auffällt: EXIT beendet nicht das Skript, sondern die ganze CMD-Instanz. Das ist fast nie gewollt. Wenn du nur das Skript verlassen willst: GOTO :eof Gruß, Nils bearbeitet 30. August 2021 von NilsK Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 30. August 2021 Autor Melden Teilen Geschrieben 30. August 2021 (bearbeitet) heisst er macht in dem Fall, indem var2 eben nicht S-1-5-18 das was er mchen soll nämlich die Aufgabe auf System umzustellen, also das folgende (Stattdessen beendet er die Batch): FOR %%L in ( _01_Regwerte_setzen ) do SCHTASKS /Create /TN %%L /f /xml "%AF%\Aufgaben\%%L.xml">nul 2>&1 bearbeitet 30. August 2021 von stefan4711 Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 30. August 2021 Melden Teilen Geschrieben 30. August 2021 Moin, also gibt "er" auch nicht das ECHO aus? Dann ist es das EXIT. Das führt eigentlich immer zu unerwünschten Folgen. Faustregel: EXIT gehört nicht in ein Batch. Was du jetzt noch nicht beantwortet hast, ist, was du da eigentlich machst. Ich sehe irgendwas von Scheduled Task und Systemkonto, kann mir aber keinen Reim drauf machen. Typischerweise kann man Probleme vom Typ "Geht nicht" besser lösen, wenn man weiß, worum es insgesamt geht. Gruß, Nils 1 Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 30. August 2021 Autor Melden Teilen Geschrieben 30. August 2021 Hallo, danke für deine Antwort, also dann erklär ichs mal kurz, die Anweisungen einzeln fuktionieren aber, es geht mir halt hier nur um die Ablauflogik, irgend etwas scheint mit dem If/Else nicht zu stimmen. Es wird geprüft ob die Aufgabe unter Systemkontext läuft, wenn ja wird nichts gemacht, wenn nein wird die Aufgabe auf System umgeschrieben, von einer XML Datei. Er springt hier aber direkt raus und bringt nicht mal das ECHO - Aufgabe auf System umtragen mit der darauffolgenden Pause, die natürlich hier nur zum Debugging dient und später natürlich keinen Sinn mehr macht, ebenso das Exit. Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 30. August 2021 Melden Teilen Geschrieben 30. August 2021 Moin, Also du willst nicht erklären, was du machst. Gut, musst du auch nicht, ist ja ein freies Land hier. Das Problem ist mit Sicherheit das Exit. Das beendet dein Skript und den ganzen CMD-Prozess. Möglicherweise habe ich die Vermutung schon mal geäußert. Du könntest jetzt mal versuchen, das Skript ohne Exit zu bauen. Musst du aber auch nicht, da sind wir liberal. Übrigens ist die einzige Zeile in dem Skript, die was machen soll, völlig unnötig kompliziert. Die FOR-Schleife braucht es dort nicht. Gruß, Nils Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 30. August 2021 Autor Melden Teilen Geschrieben 30. August 2021 (bearbeitet) Dos habe ich doch, ich ändere per Script den Ausführungskontext einer Aufgabe, wenn diese nicht auf System steht, denke da war meine Antwort wohl noch nicht abgeschickt, ok dann probier ichs mal ohne EXIT, aber wie wird das CMD dann beendet? Und ja die For Schleife braucht es hier nicht,, in der Klammer stehen sonst aber noch weitere Aufgaben, und dann macht es doch wieder Sinn, oder? Ich wollte es hier übersichtlich halten, war nicht böse gemeint und verwirren wollte ich auch nicht. lg Stefan bearbeitet 30. August 2021 von stefan4711 Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 30. August 2021 Melden Teilen Geschrieben 30. August 2021 Moin, Puh, du bist aber ne echt harte Nuss. Wie dein Code jetzt aussieht, soll ich raten, oder wie? Kann es sein, dass das Skript in dem umständlichen Befehl am Ende über den Versuch stolpert, die Variable AF aufzulösen, die du in der dritten Zeile fehlerhaft definiert hast? Gruß, Nils 1 Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 31. August 2021 Melden Teilen Geschrieben 31. August 2021 vor 9 Stunden schrieb stefan4711: ok dann probier ichs mal ohne EXIT, aber wie wird das CMD dann beendet? Das hat Nils doch geschrieben in: 1 Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 31. August 2021 Autor Melden Teilen Geschrieben 31. August 2021 sorry, hatte jetzt schon mehrfach versucht das Script zu posten, ich habe die eigentliche Befehlszeile ausgeremt, dass sich hier nicht jeder an der Zeile aufhängt, auch das zweite Exit ist raus, trotzdem muss das Script ja irgendwie beendet werden. Jetzt sezehen also nur Echos drin, und trotzdem funktioniert es nicht Meine Frage lautet, was ist an der IF Anweisung faul, fehlt irgendwo ne Klammer? @Echo Off CD /D %~dp0 SET "AF=C:\Users\Administrator\Downloads" FOR /f %%a in ('schtasks /query /TN _01_Regwerte_setzen /XML ^| findstr "UserId"') DO ( Set xml=%%a ) set var2=%xml:~8,8% echo %var2% IF %var2%==S-1-5-18 ( ECHO - Aufgabe laeuft bereits unter Systemaccount - Echo Es ist nichts zu machen pause exit ) ELSE ( pause ECHO - Aufgabe auf System umtragen ECHO Das sollte passieren wenn Aufgabe nicht unter System läuft, aber auch nur das pause REM FOR %%L in ( _01_Regwerte_setzen ) do SCHTASKS /Create /TN %%L /f /xml "%AF%\Aufgaben\%%L.xml">nul 2>&1 pause ) ECHO ALLES erledigt PAUSE lg Stefan Zitieren Link zu diesem Kommentar
NilsK 2.940 Geschrieben 31. August 2021 Melden Teilen Geschrieben 31. August 2021 Moin, liest du auch, was man dir schreibt? Ein letztes Mal versuch ich es jetzt noch. Diese Zeile ist fehlerhaft: vor 12 Minuten schrieb stefan4711: SET "AF=C:\Users\Administrator\Downloads" Und: vor 13 Minuten schrieb stefan4711: auch das zweite Exit ist raus Aber das erste Exit ist immer noch drin. Da Exit sich eben nicht so verhält, wie du das vermutest, kann es immer noch sein, dass es das Skript beendet, wenn der Parser die Zeile liest. Sollte er nicht, weil die Bedingung nicht zutrifft. Der CMD-Interpreter arbeitet aber nun mal anders als eine echte Programmiersprache. Solange das Exit also drinsteht - und zwar genau an der Stelle, wo der Abbruch stattfindet -, brauchen wir an dem Rest nicht rumzumachen. Noch besser (und mittlerweile eine Frage der Höflichkeit) wäre es, wenn du uns endlich mal sagst, was du da eigentlich insgesamt vorhast. Warum machen wir ewig an dieser IF-Konstruktion in einem Batch rum? In der Zeit hätte man die Aufgabe vermutlich manuell längst erledigt. Oder man lässt das mit dem IF einfach und erzeugt den Task in jedem Fall neu, ist ja am Ende egal. Gibt es Gründe, das anders zu machen? Dann wäre es nett, wenn du uns das wenigstens mal skizzierst, denn dann können wir vielleicht sinnvoll zu einer Lösung beitragen, statt einfach nur rumzustochern. Gruß, Nils 3 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 31. August 2021 Melden Teilen Geschrieben 31. August 2021 ... nur zu diesem Thema .... vor 11 Minuten schrieb stefan4711: trotzdem muss das Script ja irgendwie beendet werden Hmmm ... was passiert denn auf Deinem System mit dem Script, wenn der letzte enthaltene Befehl abgearbeitet wurde? ... und die ganzen Pause-Befehle sind für ein Script auch wenig hilfreich, wenn es automatisch ablaufen soll, oder? Ich weiß, hier werden gleich wieder Augen rollen, aber hast Du schon mal darüber nachgedacht, das Script in eine etwas modernere Technologie zu migrieren? ... PowerShell? 1 Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 31. August 2021 Autor Melden Teilen Geschrieben 31. August 2021 So also noch mal, ich hatte auch beide EXITS schon draussen, ich habe dich nicht ignoriert, es passiert immer noch das selbe, wenn Systemaccount, dann steht da nichts zu machen, wenn nicht dann haut er so schnell raus das man nicht mehr gucken kann und es passiert nichts, ob mit oder gar keinem EXIT. ich befolge schon dass was Ihr sagt;). Einfach mal eine Aufgabe nehmen die unter System läuft, und danach auf was anderes umtragen, dann seht Ihr was ich meine. lg Stefan Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 31. August 2021 Melden Teilen Geschrieben 31. August 2021 vor 5 Minuten schrieb stefan4711: Einfach mal eine Aufgabe nehmen die unter System läuft, und danach auf was anderes umtragen, dann seht Ihr was ich meine. Du hast ja scheinbar in der XML-Datei die Du für das "Umtragen" benutzt, die korrekten Einstellungen hinterlegt, oder? Dann kannst Du die Prüfung, ob die Aufgabe mit dem Systemkonto läuft auch weglassen und einfach gleich die Aufgabe mit den gewünschten Einstellungen anlegen und damit eine eventuell fehlerhafte Aufgabe überschreiben. Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 31. August 2021 Autor Melden Teilen Geschrieben 31. August 2021 (bearbeitet) Ja klar steht in der XML System drin, ich habe diese Prüfung ja auch nur gemacht, um unnötige Verzögerungen zu vermeiden. Es muss doch aber ne Erklärung geben warum das If nicht läuft, Ich habe den Aufgabenimport ja momentan auskomentiert. Und wie bereits erwähnt, vor einigen Monaten funktionierte das ganze ja auch noch. (Updates ? anderes Batchverhalten, wär ja nichts Neues);) bearbeitet 31. August 2021 von stefan4711 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.