Jump to content

Aufgabenplanung erzeugt keine neue Sitzung - SETX setzt immer den selben Wert.


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

Empfohlene Beiträge

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%+1
set /a xxx1 = %XXX%+1
echo %year% %month% %day% %hour% %minute% %second% >> c:\automation\seq.log
Echo %SEQ% %SEQ1% %XXX% %xxx1% >> c:\automation\seq.log

set /a seq=%seq1%

set /a xxx=%xxx1%
setx SEQ %seq1% /M
setx 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 20
20 21 101 102
21 und 102 wurden neu gesetzt.  
****************************************************
2014 11 07 17 06 20
20 21 101 102
21 und 102 wurden neu gesetzt.  
****************************************************

2014 11 07 17 06 20
20 21 101 102
21 und 102 wurden neu gesetzt.  

 

Interaktiv aufgerufen (neue CMD Session ohne die hilfsvariable seq1 und xxx1 zu setzen)

2014 11 10 11 20 20
20 %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!
 

Link zu diesem Kommentar

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 von Lander
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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 von Lander
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...