Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wochentag per Batch herausfinden

1,103 views
Skip to first unread message

Markus Mange

unread,
Apr 5, 2006, 3:44:04 AM4/5/06
to
Hallo NG,

ist wahrscheinlich gar nicht wild, aber wie kann ich in einer Batchfile
den aktuelle Wochentag herausfinden?

Bräuchte etwas in der Art:

Wenn Wochentag = Montag dann Kopiere Datei A
Wenn Wochentag = Dienstag dann Kopiere Datei B
usw.

Das ganze soll auf einen 2003 Server laufen.

Vielen Dank im voraus.

Markus

Stefan Scholl

unread,
Apr 5, 2006, 4:14:18 AM4/5/06
to
Markus Mange <spama...@spam.de> wrote:
> Das ganze soll auf einen 2003 Server laufen.

Einem Server von 2003? Welcher Hersteller? :-)

Markus Mange

unread,
Apr 5, 2006, 4:43:18 AM4/5/06
to
Stefan Scholl schrieb:

> Markus Mange <spama...@spam.de> wrote:
>
>>Das ganze soll auf einen 2003 Server laufen.
>
>
> Einem Server von 2003? Welcher Hersteller? :-)
>

Sorry. Meinte natürlich MS Windows Server 2003. Die Angabe nur, weil es
evtl. unterschiede in der Batchprogrammierung geben könnte.

Peter Ikier

unread,
Apr 5, 2006, 5:44:15 AM4/5/06
to
Hallo Markus,

Markus Mange schrieb:


> Hallo NG,
>
> ist wahrscheinlich gar nicht wild, aber wie kann ich in einer Batchfile
> den aktuelle Wochentag herausfinden?

dochdoch, das ist nicht so ohne weiteres möglich.
Am einfachsten schreibst du dir ein kleines Programm in einer beliebigen
Programmiersprache, das den aktuellen Wochentag als Rückgabewert
zurückgibt. Dann kannst du mit ERRORLEVEL den Tag abfragen.

Etwa so:

-------------8<------------------------------------
REM Aufruf des Programms, das den Wochentag als Fehlercode liefert
ruby datum.rb

REM Auswertung des Errorcodes. Reihenfolge von "oben nach unten",
REM da errorlevel auf ">=" testet.
if errorlevel 7 ( echo "Samstag"
) else (if errorlevel 6 ( echo "Freitag"
) else (if errorlevel 5 ( echo "Donnerstag"
) else (if errorlevel 4 ( echo "Mittwoch"
) else (if errorlevel 3 ( echo "Dienstag"
) else (if errorlevel 2 ( echo "Montag"
) else (if errorlevel 1 ( echo "Sonntag"
) else ( echo "Kein Tag"
)))))))
-------------8<------------------------------------

> Das ganze soll auf einen 2003 Server laufen.

Das dürfte ziemlich egal sein. Seit NT hat sich da nicht mehr viel dran
getan.

Falls du auch mein geniales Ruby-Skript haben willst, das die obige
Batch-Datei aufruft: Hier ist es:

-------------8<------------------------------------
#!/usr/bin/env ruby

heute = Time.new

# p (heute.wday + 1)
exit (heute.wday + 1)
-------------8<------------------------------------

Manchmal wundert man sich wirklich, wie eingeschränkt man mit der
Kommandozeile unter Win ist... 8-)

Gruß
pi

--
This room is air conditioned and the SUN is shining the NeXT days,
so please, don't open windows.

Georg Bauhaus

unread,
Apr 5, 2006, 5:58:34 AM4/5/06
to
Peter Ikier wrote:
> Hallo Markus,
>
> Markus Mange schrieb:
>
>> Hallo NG,
>>
>> ist wahrscheinlich gar nicht wild, aber wie kann ich in einer
>> Batchfile den aktuelle Wochentag herausfinden?
>
>
> dochdoch, das ist nicht so ohne weiteres möglich.

???

> Etwa so:

REM

date /T | find "Mi" && copy ...


usw.


Georg

Peter Ikier

unread,
Apr 5, 2006, 6:54:55 AM4/5/06
to
Georg Bauhaus schrieb:

>
> date /T | find "Mi" && copy ...
>

Ein

date /T | find "Mi" && echo "Mittwoch"

liefert unter Win2000 nur

find: Mi: No such file or directory

<DokuLes> Aha! </DokuLes>
Wenn ich das Pipe-Symbol weglasse geht es.

Aus der Onlinehilfe von find:

"Fehlt der Pfad, so durchsucht FIND von der Tastatur aus eingegebenen
Text oder die Ausgabe des Befehls, der FIND in einer Befehlskette
vorangestellt ist."

Boah ist das krank...

Gruß
pi

PS: Also so gehts:

date /T find "Mi" && echo "Mittwoch"

--
"Findest du das nicht auch irnkwie merkwürdig, dass die Musiker
von Klang_farben_ sprechen und die Maler von Farb_tönen_?"
(Volker Gringmuth in de.rec.music.machen)

Georg Bauhaus

unread,
Apr 5, 2006, 7:06:25 AM4/5/06
to
Peter Ikier wrote:
> Georg Bauhaus schrieb:
>
>>
>> date /T | find "Mi" && copy ...
>>
>
> Ein
>
> date /T | find "Mi" && echo "Mittwoch"
>
> liefert unter Win2000 nur

Du willst sagen, "liefert unter meiner Unix-Emulation, die sich
auf meinem Win2000 breit macht",

> find: Mi: No such file or directory

Das ist eine Fehlermeldung von GNU find, nicht Windows find.


> <DokuLes> Aha! </DokuLes>
> Wenn ich das Pipe-Symbol weglasse geht es.

Dann geht was anderes...


> Boah ist das krank...

Ja, schon merkwürdig.

Markus Mange

unread,
Apr 5, 2006, 9:26:33 AM4/5/06
to
erst mal vielen Dank für eure Antworten.
Leider funktionieren alle vorschläge nicht. Es werden immer alle Dateien
kopiert...
Kann das daran liegen, das der datebefehl bei mir 2006-04-05 ausgibt?
Dann kann "find" doch gar kein "Mi" finden...

Hat noch jemand vorschläge, oder mache ich komplett was falsch?

Gruß

Markus

Georg Bauhaus

unread,
Apr 5, 2006, 9:58:31 AM4/5/06
to

Vielleicht doch die Funktionen des servers nutzen?

Man kann jobs fuer Windows einrichten, die zu bestimmten Zeiten, Tagen,
Wochentagen usw. laufen.
Setzt dann allerdings ein paar Kenntnisse der Windows-Systemverwaltung
voraus.

Georg

Stefan Reuther

unread,
Apr 5, 2006, 12:25:46 PM4/5/06
to
Markus Mange wrote:
> Leider funktionieren alle vorschläge nicht. Es werden immer alle Dateien
> kopiert...
> Kann das daran liegen, das der datebefehl bei mir 2006-04-05 ausgibt?
> Dann kann "find" doch gar kein "Mi" finden...

ja.

> Hat noch jemand vorschläge, oder mache ich komplett was falsch?

Als ich das letzte Mal was komplizierteres in Windows mit Bordmitteln
scripten musste, habe ich den WSH mit JScript benutzt. Dafür ist er
schließlich da.
var day_of_week = (new Day).getDay();
0=Sonntag .. 6=Samstag.

Ob man das jetzt auch als Errorlevel irgendwie rausbekommt, bin ich
überfragt; im Zweifelsfall lass das JS-Programm eine Batchdatei anlegen
und führe die aus o.ä.


Stefan

Markus Mange

unread,
Apr 6, 2006, 2:16:05 AM4/6/06
to
Hi Georg,

> Vielleicht doch die Funktionen des servers nutzen?
>
> Man kann jobs fuer Windows einrichten, die zu bestimmten Zeiten, Tagen,
> Wochentagen usw. laufen.
> Setzt dann allerdings ein paar Kenntnisse der Windows-Systemverwaltung
> voraus.
>

das wollte ich eigentlich vermeiden. Weil ich habe hier schon ein etwas
größeres Batchfile, das unter der Woche automatisch per "Geplanter Task"
ausgeführt wird. Und da wollte ich das ganze anhängen.
Aber wenn es nicht geht, dann mach ich mir eben 7 Bat Dateien und lass
Sie eine viertel Stunde nach dem Hauptbatchfile laufen.

Vielen Dank an alle, die geholfen haben.

Gruß

Markus

josef

unread,
Apr 6, 2006, 1:49:16 PM4/6/06
to
Hallo Markus,

bei mir (Microsoft Windows XP) funktioniert folgendes Batch-file:

@echo off
for /F "tokens=1,2* delims=-" %%A in ('date /T') do \
set /A J=%%A && set /A M=%%B && set /A T=%%C
@rem for /F "tokens=1,2* delims=-" %%A in ('echo %1') do \
set /A J=%%A && set /A M=%%B && set /A T=%%C
set /A R=J%%4
set /A S=0
if %R% EQU 0 set /A S=1
set /A F=0
if %M% GEQ 3 set /A F=S-2
set /A A=0
if %M% GEQ 8 set /A A=1
set /A W=(3+((3+1461*J)/4)%%7+((-60+61*M+A)/2+F)%%7+T)%%7
@echo %W%


(bei den Zeilen mit "\"-Zeichen am Ende dieses und den Zeilenumbruch
entfernen)

Inhalt der Ugebeungsvariablen:
J ... Jahreszahl vierstellig
M ... Monat 1-12
T ... Tag
S ... Schaltjahr 0 oder 1
F ... Februarkorrektur 0 oder S-2
A ... Augustkorrektur 0 oder 1
W ... Wochentag Mo-So 0-6 (Ergebnis)

Magische Zahlen:
1461 ... Tage in vier Jahren
61 ... Tage in zwei Monaten (im Mittel genau genug)

Sollte wegen vereinfachter Schaltjahrregel nur von 1901 bis 2099
funktionieren.

Erklärungen:
help echo
help for
help rem
help set
help if

mfG Josef

Dirk Clemens

unread,
Apr 7, 2006, 5:40:27 PM4/7/06
to
Markus Mange wrote:
>
> Aber wenn es nicht geht, dann mach ich mir eben 7 Bat Dateien und lass
> Sie eine viertel Stunde nach dem Hauptbatchfile laufen.
>
Und wie wäre es, das date Programm aus den UnxUtils
(hhttp://unxutils.sourceforge.net/) zu nehmen
und "path\date +%w" aufzurufen?

Lemmi

0 new messages