Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Plattformunabhängiges Datum in Batch

Frage Entwicklung Batch & Shell

Mitglied: slickwilly2000

slickwilly2000 (Level 1) - Jetzt verbinden

16.03.2007, aktualisiert 23.03.2007, 3822 Aufrufe, 8 Kommentare

Hallo,

wir haben hier mehrere verschiedene Betriebssysteme am Laufen. Darunter Windows 2000, Windows NT 4.0, Windows Server 2003, Windows XP...


Derzeit muß ich mehrere Batch-Dateien schreiben, die sich möglichst unter allen Systemen gleich verhalten. So z.B. beim Datum:


for /f "delims=" %%i in ('date /t') do set datum=%%i && echo %datum:~-12,10%

Das geht und liefert mir immer das Datum im Format: DD:MM:YYYY


Geht dies auch kürzer?
Ich würde gerne die &&-Verknüfung noch weglassen, allerdings geht dann der Tilde-Operator nicht mehr.

Wer kann helfen?


Grüße,
slickwilly2000
Mitglied: Biber
16.03.2007 um 12:55 Uhr
Moin slickywilly2000,

echo %date:~-12,10%
--oder--
set mydate=%date:~-12,10%

HTH Biber
Bitte warten ..
Mitglied: slickwilly2000
16.03.2007 um 13:16 Uhr
Das hilft mir leider überhaupt nicht weiter.

Ich habe doch extra geschrieben, daß ich es plattformunabhängig machen möchte. Die Umgebungsvariable %date% bzw. %time% gibt es unter NT 4.0 nicht.

Deshalb der "Umweg" über den for-Befehl.

Die Frage lässt sich auch reduzieren: Wie schaffe ich es, aus der Variablen %%i des for-Befehls den Tilde-Operator anzuwenden. Da habe ich das Problem.


Grüße,
slickwilly2000
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 14:23 Uhr
@echo off
for /f "tokens=1,2,3,4 delims=/." %%a in ('date /t') do set CDATE=%%c-%%b-%%a
echo %cdate%

probier es mal damit, hinten bei do set CDATE= kannst du das gewünschte format einstellen
Bitte warten ..
Mitglied: Biber
16.03.2007 um 18:44 Uhr
Na ja,

wenn die vereinfachte Annahme gilt, dass auf allen relevanten Rechnern ein "deutsches" Datumsformat angezeigt wird, also entweder "Fr 16.03.2007" oder nur "16.03.2007", dann geht es nur über das o.b. Setzen einer Zwischenvariable, wenn davon ein Teilstring gebraucht wird.
Und wenn das in einer Zeile passieren soll, dann muss eben auch mit dem "&&" verkettet werden.

for /f "delims=" %%i in ('date /t') do set datum=%%i && echo %datum:~-10%
-->wäre dann schon die kürzeste Lösung.
[Nicht berücksichtigt: die Variable könnte natürlich auch %d% genannt werden statt %datum% ]

Gruss Biber
Bitte warten ..
Mitglied: eeleater
17.03.2007 um 17:04 Uhr
stimmt des ginge auch...
Bitte warten ..
Mitglied: slickwilly2000
18.03.2007 um 12:08 Uhr
Danke für eure Antworten.

Es gibt aber ein Problem, wie ich gerade sehe: Die Variable %datum% ist nicht gesetzt, wenn ich den zweiten Befehl mit && verknüpfe. Erst in einer neuen Zeile ist die Umgebungsvariable dann gesetzt.

Vielleicht könnte mal einer vergleichen:

echo off
for /f "delims=" %%i in ('date /t') do set datum=%%i && echo %datum%
pause
echo %datum%
pause


(gestestet unter Windows XP)


Wer kennt die Ursache, oder noch besser die Lösung für dieses Problem?

Grüße,
Alex
Bitte warten ..
Mitglied: Biber
18.03.2007 um 18:08 Uhr
Moin slickywilly2000,

die Ursache ist, dass die Variable %datum% in einer Zeile gesetzt und wieder gelesen werden soll.
Der CMD-Interpreter arbeitet zeilenweise.
Da der CMD-Interpreter die gesamte Zeile vor der Ausführung einmal liest, auf formale Syntaxrichtigkeit prüft, alle darin enthaltenen Variablen einmalig auflöst und dann die Zeile ausführt, ergibt ein "echo %datum%" genau das, was ein "echo %datum%"als einziger Zeileninhalt ergeben würde - den Wert, den die Variable %datum% in der Vorzeile hatte.

Lösungen
a ) [recommended]
Mach zwei Zeilen draus. Statt mit "&&" in einer Zeile verknüpfen, eine Zeile für die FOR-Anweisung, eine zweite für das "Echo %datum%"
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in ('date /t') do set datum=%%i  
03.
echo %datum% 
04.
pause
b) Mit "verzögerter Variablenauflösung"/DelayedExpansion arbeiten
01.
@echo off & setlocal EnableDelayedExpansion 
02.
for /f "delims=" %%i in ('date /t') do set datum=%%i && echo !datum! 
03.
pause
Gruss
Biber
Bitte warten ..
Mitglied: slickwilly2000
23.03.2007 um 16:39 Uhr
Vielen Dank für eure Antworten! Es hat mir sehr weitergeholfen.


Es ist schon erstaunlich, daß man immer wieder was über Batch dazulernt.


Grüße,
slickwilly2000
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst (Batch) Datum Sortier-Mechanismus (19)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Windows 10 Batch für Datum und Uhrzeit setzen (18)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch soll an einem bestimmten Datum eine Website öffnen (3)

Frage von Yanmai zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
24" oder 27" mit Full HD oder doch mehr Auflösung? (22)

Frage von brutzler zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...