[Gelöst] SHELL Befehl net time

5. März 2007 15:24

Hallo liebe Mitmenschen,

leider konnten mir die SHELL-Beiträge bzw. Antworten in diesem Forum noch nicht recht weiterhelfen.

Folgenden Befehl, der in 3.xx funktionierte macht in 4.xx Probleme:

Code:
SHELL('net time ' + GrSetup2."GE/Path Server Time" + ' /set /yes');


Mir ist bekannt, dass die Shell-Befehle sich in 4.xx geändert haben, doch leider konnten mir diese Informationen noch nicht wirklich weiterhelfen bzw. ich konnte diese nicht interpretieren. Stehe irgendwie auf dem Schlauch :-?

Vielleicht kann mir diesbezüglich noch jemand einen Tipp geben.

Vielen Dank im Voraus

mia
Zuletzt geändert von mia187 am 6. März 2007 12:52, insgesamt 1-mal geändert.

5. März 2007 15:49

bei uns funktioniert das so:

Code:

                  LtOSVersion := OSVERSION;
                  CASE LtOSVersion OF
                    'Windows_NT_5.0':
                      BEGIN
                        LtRoot := 'c:\WINNT\system32';
                      END;
                    'Windows_NT_5.1':
                      BEGIN
                        LtRoot := 'c:\WINDOWS\system32';
                      END;
                    'Windows_NT_5.2':
                      BEGIN
                        LtRoot := 'c:\WINDOWS\system32';
                      END;
                  END;
                  LtCommand := LtRoot + '\net.exe';
                  SHELL(LtCommand,'time',FORMAT(GrEinrichtung2."GE/Path Servertime" + ' /set /yes'));


mfg Michael

5. März 2007 15:55

Hi Mia!

Herzlich willkommen bei MSDynamics.de :-P

Nun, kurz gesagt: SHELL sucks! Zumindest seit NAV 4.00. Ich empfehle die Verwendung des "Windows Script Host" stattdessen; hier ein paar Beispiele:

http://www.msdynamics.de/viewtopic.php?t=2725&highlight=script+host
http://www.msdynamics.de/viewtopic.php?t=2690&highlight=script+host
Gruß,
Jörg

5. März 2007 16:01

Sofern in deinem SHELL-Befehl ein Dateipfad hinterlegt ist, muss dieser in doppelten Anführungsstrichen angegeben werden.
Siehe hier:
http://www.msdynamics.de/viewtopic.php?t=2842

5. März 2007 16:28

@mespelage

Zufällig TempVision im Einsatz :shock: ??

Folgendes Dos-Fenster erscheint:
Systemfehler aufgetreten
Zugriff verweigert

Ein Rechte-Problem?

@Natalie
Ich werde mal was genauer:
Fehlermeldung:
Das BS findet den Pfad nicht, den Sie für die Datei "net time \\server /set /yes" eingegeben haben. Prüfen Sie blabla

Da es sich um keinen eigentlichen Dateipfad handelt sehe ich kein Problem, oder?

Yeahr Shell sucks ;)

5. März 2007 16:34

Funktioniert das?!?:

Code:
{Variables:
WSH_Shell     Automation 'Windows Script Host Object Model'.WshShell
Command       Text100
ExitCode      Integer
WindowStyle   Variant
WaitOnReturn  Variant}

Command := 'net time ' + GrSetup2."GE/Path Server Time" + ' /set /yes'

WindowStyle := 0; // hidden
WaitOnReturn := TRUE;  // modal run, receive ExitCode

IF ISCLEAR(WSH_Shell) THEN
  CREATE(WSH_Shell);
ExitCode := WSH_Shell.Run(Command, WindowStyle, WaitOnReturn);

MESSAGE('%1', ExitCode);   // 0 = OK; 1 := Error

5. März 2007 16:42

@stryk

Habe den Code auf die Schnelle im OnRun-Trigger einer Codeunit ausgeführt.

Meldung: 2 :?: :-)

Uhrzeit wird nicht synchronisiert.

5. März 2007 16:56

Ähm ... ist der Parameter "/yes" gültig? Kann ihn in der Syntax-Beschreibung zu "net time" nicht finden?!

NET TIME
[\\computername | /DOMAIN[:domainname] | /RTSDOMAIN[:domainname]] [/SET]
[\\computername] /QUERYSNTP
[\\computername] /SETSNTP[:ntp server list]

5. März 2007 17:25

Definitiv, ansonsten wartet das System auf folgende Rückmeldung:

Die aktuelle lokale Zeit ist 3/5/2007 4:12 PM.
Soll die Zeit des lokalen Computers mit der Zeit auf \\server übereinstimmen? (J/N) [J]
(DOS-Box)

ohne /yes Anweisung im Code läuft Navision irgendwie ins Nirvana. Eine Message wird nicht mehr ausgegeben.

5. März 2007 17:44

mia187 hat geschrieben:Das BS findet den Pfad nicht, den Sie für die Datei "net time \\server /set /yes" eingegeben haben. Prüfen Sie blabla

Da es sich um keinen eigentlichen Dateipfad handelt sehe ich kein Problem, oder?
Versuchs mal so hinzuschreiben:

Code:
net time "\\server" /set /yes

Die doppelten Anführungsstriche dürfen wirklich nur den Pfad umgeben, nicht Parameter (/set) oder Befehle (net time).

Ist aber nur ins Blaue geraten :-(

5. März 2007 18:03

Ja, habe ich bereits probiert. Leider mit folgendem Ergebnis:

Der Name der Datei "net time \\server /set /yes" enthält ein ungültiges Zeichen.
Prüfen Sie bitte den Dateinamen. RTFM..

:-(

5. März 2007 18:53

Hallo Mia,

probier doch mal ob folgendes funktioniert:


SystemPath := ENVIRON('comspec');
SystemPath := DELCHR(SystemPath,'>','cmd.exe');
SHELL(SystemPath+'net.exe',' time ' + GrSetup2."GE/Path Server Time" + ' /set /yes');


Kann sein dass du die Syntax noch ein bisschen anpassen musst, konnte das leider mit den Variablen nicht testen.

Gruß

6. März 2007 09:38

@Mathes

Das sieht seeehr gut aus! Vielen lieben Dank!!! :-D