Lander 10 Geschrieben 10. November 2014 Melden Teilen Geschrieben 10. November 2014 Hello @all... Ich kämpfe gerade mit einem simplen Commandfile, dass unter Windows XP super gelaufen ist. Im wesentlichen macht es folgendes: set /a seq1 = %SEQ%+1set /a xxx1 = %XXX%+1echo %year% %month% %day% %hour% %minute% %second% >> c:\automation\seq.logEcho %SEQ% %SEQ1% %XXX% %xxx1% >> c:\automation\seq.log set /a seq=%seq1% set /a xxx=%xxx1%setx SEQ %seq1% /Msetx XXX %xxx1%Echo %SEQ1% und %xxx1% wurden neu gesetzt. >> c:\automation\seq.log Ziel ist es eine Datei umzubenennen, die wenn sie vorhanden ist per Mail gesendet wird und dann mit dem Counter (Seqence - Number) umbenannt wird. XXX habe ich nur zum testen mit eingefügt. Das Ergebnis ist jedoch immer das gleiche: Führe ich das ganze interaktiv aus, so wird die Sequence Number immer hochgezählt. In einer neuen CMD Session kann ich den neuen Wert abrufen. Starte ich die Prozedur aus der Aufgabenplanung so bekomme ich immer den selben Wert. Dies zeigen auch die Logfiles: Die Datum - Zeit Variablen werden durch ein anderes Programm (Aufgabenplanung) gesetzt, verändern sich aber ebenfalls nicht. 2014 11 07 17 06 2020 21 101 10221 und 102 wurden neu gesetzt. ****************************************************2014 11 07 17 06 2020 21 101 10221 und 102 wurden neu gesetzt. **************************************************** 2014 11 07 17 06 2020 21 101 10221 und 102 wurden neu gesetzt. Interaktiv aufgerufen (neue CMD Session ohne die hilfsvariable seq1 und xxx1 zu setzen) 2014 11 10 11 20 2020 %SEQ1% 102 %xxx1%Ich kann mir nur Vorstellen, dass die Ursache der immer gleiche Prozess (Taskplaner) ist. Das hat unter XP aber super funktioniert. Kann man das Verhalten umgehen? Net stop scheduler und Net start scheduler sind keine Alternative, da auf diesem Rechner sehr viele Aufgaben laufen. Bin für jeden Hinweis dankbar! Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 10. November 2014 Melden Teilen Geschrieben 10. November 2014 Denke an UAC. UAC will u.U. in den globalen ENV schreiben... Zitieren Link zu diesem Kommentar
Lander 10 Geschrieben 10. November 2014 Autor Melden Teilen Geschrieben 10. November 2014 (bearbeitet) Danke für den Hinweis. Benutzerkontensteuerung ist deaktiviert. Hat UAC dann immer noch Auswirkung? Habe es mit Benutzer und mit Systemvariablen (SETX und SETX /M) als Domänenadmin (mit Haken "Mit höchsten Privilegien ausführen") laufen. Nichts davon hat funktioniert. Und wie gesagt, interaktiv ist alles OK. bearbeitet 10. November 2014 von Lander Zitieren Link zu diesem Kommentar
daabm 1.334 Geschrieben 10. November 2014 Melden Teilen Geschrieben 10. November 2014 Ich rate mal ein wenig - aber qualifiziert :cool: Ab Vista laufen Tasks als Child von taskeng.exe. Die wiederum läuft als SYSTEM. Ein setx für Änderungen im Benutzerkontext wird also dort niemals ankommen. Und da taskeng.exe nicht neu gestartet wird, behält es seine Umgebung, die es an neue Childs weitervererbt. Das müßtest Du in der Registrierung sogar sehen, wenn Du setx /m verwendest: Unter HKLM\System\CCS\Control\Session Manager\Environment sollte der aktualisierte Wert für Deine Variable stehen... Und dank Session Isolation fällt mir für Deine Methode auch kein praktikabler Weg ein. Ich würde auf Registrierungswerte ausweichen... Die kannst Du mit reg add setzen/ändern und mit SETX in (temporäre) Umgebungsvariablen schreiben. BTW: Dass setx im Explorer Variablen aktualisieren kann, hat in dem Zusammenhang keine Bedeutung - der Explorer kriegt da ein Refresh-Signal. Aber taskeng.exe hat das eher nicht :cool: Schlußwort: Das ist zwar alles geraten, aber so oder so ähnlich ist es auf jeden Fall :D Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 10. November 2014 Melden Teilen Geschrieben 10. November 2014 Oder man schaut sich das mal mit Powershell an und schreibt die persistenten Daten in eine Text- oder XML-Datei. Zitieren Link zu diesem Kommentar
daabm 1.334 Geschrieben 10. November 2014 Melden Teilen Geschrieben 10. November 2014 ...oder in eine Datenbank. Ich wollte es dem TO einfach machen - setx /k hat er in seinem Batch schnell implementiert :cool: Zitieren Link zu diesem Kommentar
Lander 10 Geschrieben 11. November 2014 Autor Melden Teilen Geschrieben 11. November 2014 (bearbeitet) Ich rate mal ein wenig - aber qualifiziert :cool: Ab Vista laufen Tasks als Child von taskeng.exe. Die wiederum läuft als SYSTEM. Ein setx für Änderungen im Benutzerkontext wird also dort niemals ankommen. Und da taskeng.exe nicht neu gestartet wird, behält es seine Umgebung, die es an neue Childs weitervererbt. Danke für alle Euere Gedankenanstöße... So was in der Richtung hatte ich ja schon vermutet. Werde mir ein kleines (c#) Hilfsprogramm schreiben, dass mir Sequence Numbers generieren und auslesen kann, da ich diese Funktion an mehreren Stellen verwende. geht noch einfacher mit einfachen Dateien... Geht über Dateien noch einfacher (bin mit dem Prog übers Ziel geschossen)... set /p "xxx1=" < addseq_xxx.seq REM Zähler einlesen aus Datei set /a xxx1=%xxx1%+1 REM Zähler erhöhen echo %xxx1% > addseq_xxx.seq REM Zähler in Datei schreiben echo. >> addseq_xxx.seq REM Enter an Datei anhängen (wichtig wg. /p im ersten SET Statement). für alle die ein ähnliches Problem haben... :cool: Damit ist dieses Thema für mich abgeschlossen. Nochmals Danke an alle die mit überlegt haben! bearbeitet 11. November 2014 von Lander Zitieren Link zu diesem Kommentar
daabm 1.334 Geschrieben 11. November 2014 Melden Teilen Geschrieben 11. November 2014 ...kleiner Nachsatz: Wenn Du Dir dafür ein C#-Programm schreiben kannst - warum machst Du das ganze dann nicht gleich "anständig"? SCNR :cool: 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.