ahoefer21
Goto Top

Zugriff auf Date-Variable Windows NT 4.0

Hab ein wunderschönes Programm geschrieben, dass mit der Funktion "date" das aktuelle Datum ausliest und weiterverwendet!!

Das funzt leider nicht im Windows NT 4.0 wo ich das Programm einsetzen will!!

Wie kann man dort auf die Variable zugreifen???

Content-Key: 26014

Url: https://administrator.de/contentid/26014

Printed on: April 25, 2024 at 06:04 o'clock

Member: maneich
maneich Feb 15, 2006 at 01:00:41 (UTC)
Goto Top
Hallo,

nun, dann stelle mal das Script oder zumindest den Teil, der das Datum ausliest hier rein.

Dann kann man Dir bestimmt auch sagen, wo es hapert.

NfG maneich
Member: AHoefer21
AHoefer21 Feb 15, 2006 at 07:46:34 (UTC)
Goto Top
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

echo %jahr%%monat%%tag%

So greife ich Momentan auf die einzelnen Variablen zu!!
Aber das funkt nicht im NT4
Member: Biber
Biber Feb 15, 2006 at 12:07:34 (UTC)
Goto Top
Moin AHoefer21,

die %Date%-Variable wird bei NT 4.0 nicht mitgeliefert?

Wenn das so ist, musst Du sie selber setzen.
Poste dazu mal bitte, wie bei Dir folgende Ausgaben am Command-Prompt sind:
echo exit|cmd /q /k"prompt $D $T"   

und
echo.|date
Dann sehen wir weiter.

Gruß
Biber
Member: AHoefer21
AHoefer21 Feb 15, 2006 at 14:37:44 (UTC)
Goto Top
Das hab ich erhalten:

Mi 15.02.2006 15:39:19,05
Member: Biber
Biber Feb 15, 2006 at 15:20:02 (UTC)
Goto Top
Na, dann ist es doch machbar...
Dann schreibe mit folgender Zeile eine Temporäre Datei $$.tmp

::----Snipp GetADateWithNT.bat (ungetestete Skizze)
@echo off....
echo exit|cmd /q /k"prompt $D"|find "." >$$.tmp  

::----> In dieser Datei steht jetzt "Mi Mi 15.02.2006" als eine Zeile drin.  
::----> Diese eine Zeile Packst Du in eine Variable "MyDate" mit der Anweisung:  
set /p mydate=<$$.tmp
:: ----> Tempdatei löschen
del $$.tmp >nul
--->> Wochentag entfernen, falls vorhanden, Vortest am CMD-Prompt
:: for %i in (%mydate%) do @echo %i
:: --->die Zeile vorher wird aufgelöst zu
:: --- for %i in (Mi 15.02.2006) do @echo %i
:: --- Mi
:: --- 15.02.2006
:: Im Batch also:
for %i in (%mydate%) do Set Date=%i
:: in %DATE% steht jetzt: 15.02.2006
::----Snipp GetADateWithNT.bat (ungetestete Skizze)
HTH Biber
Member: AHoefer21
AHoefer21 Feb 15, 2006 at 20:19:13 (UTC)
Goto Top
Und wie kann ich im NT 4.0 den String zerlegen und auf die einzelnen Datenpunkte (Tag, Monat, Jahr) einzeln zugreifen??

Brach das Datum im Format: JJJJMMTT!!!
Member: Biber
Biber Feb 15, 2006 at 20:35:19 (UTC)
Goto Top
Hmm, was kann der Command-Prompt schon bei NT4.0?
Ich habe kein NT mehr gesehen, seit Tamagotchis und TriTop-Getränke ihren Hype hatten...

Wenn der CMD-Prompt schon die Möglichkeiten von Win2k hat (ich weiß es wirklich nicht mehr), dann
- entweder über die Substring-Funktion bei Variablen, wie Du oben gepostet hast
- oder über eine FOR /F-Schleife mit "Delims=." (Trenner sind die Punkte).
FOR /F "tokens=* delims=." %%a in (%date%) do set JJJJMMTT=%%c%%b%%a
- oder über einen Aufruf eines VBS-Schnipsels, falls VB-Script da schon läuft.

- wenn NT nichts von alledem kann, wird es unappetitlich. (Aber natürlich trotzdem lösbar).
Member: AHoefer21
AHoefer21 Feb 15, 2006 at 20:45:20 (UTC)
Goto Top
Das hab ich mir gleich gedacht, dass es doch nicht so einfach wird!!

Naja werd mal weiter probieren!!

Trotzdem danke!!
Member: Biber
Biber Feb 15, 2006 at 20:53:15 (UTC)
Goto Top
*ggg... darf ich das so interpretieren, dass Substring- und FOR /F-Variante entfallen?

Und VBSkript? Läuft das unter NT? Ein kleines VBSchnipselchen kann ja aufgerufen werden entweder zur Datumsermittlung/-zerlegung in Tag, Monat, Jahr oder auch zur Stringzerlegung.

Wenn das zu aufwändig ist: in gogoflashs neuestem Tutorial "Druckkontigente verwalten mit Bordmitteln" ist u.a. ein Link gepostet zu einer "VAR SET"-Freeware. Die kann sowas alles. Auch schon bei Win97 oder wie das damals hieß.
Member: maneich
maneich Feb 15, 2006 at 23:04:18 (UTC)
Goto Top
Hallo,

WinNT enthält ja auch das Programm "choice.com", zumindest ist es im RecourseKid für WinNt enthalten.

Dann solltest Du mal ff. Batch testen:

liefert Dir das aktuelle Datum aufgeteilt in 3 Variablen tt / mm / jjjj bzw. tt / mm / jj

[name = dateX.bat]
snip
@echo off
cls
rem Aufruf in Batch oder Eingabeaufforderung mit:
rem liefert tt - mm - yyyy getrennt Normalzustand
rem z.B. call datex a b c Parameter für Ausgabe
rem liefert tt - mm - yy getrennt bei 4. Parameter 1
rem z.B. call datex a b c 1 Parameter für Ausgabe
for %%e in (loop loop2) do if %2'==%%e' goto %2
set q2=%1
set q3=%2
set q4=%3
set q5=%4
set ~t=%TEMP%.\Tmp
echo @prompt For %%%%%%%%D In ($D) Do Call %0 : loop %%%%%%%%D>%~t%1.bat
%COMSPEC% /C %~t%1.bat.>%~t%2.bat
call %~t%2.bat
call %~t%4 q1
Echo ; | Choice /S /C:;%q1%; %0 : loop2,>%~t%1.bat
%~t%1.bat
:loop
Echo @prompt Set %%%%1=_%3_ > %~t%3.bat
%COMSPEC% /C %~t%3.bat > %~t%4.bat
For %%C In (Call Goto:end) Do %%C %~t%4
:loop2
for %%e in (x x1 x2) do set %%e=
If %4'==_' Shift
for %%e in (set shift) do %%e x=%x%%4
for %%e in (set shift) do %%e x=%x%%4
shift
for %%e in (set shift) do %%e x1=%x1%%4
for %%e in (set shift) do %%e x1=%x1%%4
shift
if %q5%'==1' for %%e in (shift shift goto:y_low) do %%e
for %%e in (shift set) do %%e x2=%4
for %%e in (shift set) do %%e x2=%x2%%4
:y_low
for %%e in (shift set) Do %%e x2=%x2%%4
for %%e in (shift set) do %%e x2=%x2%%4
:end2
set %q2%=%x%
set %q3%=%x1%
set %q4%=%x2%
del %~t%*.bat>nul
for %%e in (q2 q3 q4 q1 x x1 x2 ~t) do set %%e=
:end
cls
snip


Sollte auch unter WinNt laufen.

MfG maneich