Festlegen einer Windows-Batchdateivariable auf den Wochentag
Ich habe eine windows-batch-Datei, die läuft täglich. Möchten, melden Sie Daten in eine Datei und wollen, um es zu drehen (d.h. maximal die letzten 7 Tage im Wert von Daten).
Sah in die Befehle DATE
und DELIMS
- Nicht herauszufinden, eine Lösung.
Gibt es da eine einfache Lösung zum erstellen einer Datei-Namen enthält, den Tag der Woche, d.h. 0 für Montag usw.
Oder muss ich etwas ähnliches besser shell-Skript.
InformationsquelleAutor der Frage Ed Heal | 2012-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
%DATE%
ist nicht dein Freund. Da die%DATE%
Umgebungsvariable (und dieDATE
Befehl) gibt das aktuelle Datum mit dem Windows kurze Datum-format das ist voll und endlos anpassbar. Ein Benutzer kann das system so konfigurieren, zurück 07/06/2012, während andere wählen könnte, Fri060712. Mit%DATE%
ist der absolute Albtraum für eine FLEDERMAUS-Programmierer.Gibt es zwei mögliche Ansätze um dieses problem zu lösen:
Sie könnten versucht sein, ändern Sie vorübergehend das kurze Datum-format, indem Sie die locale-Einstellungen in der registry-Wert
HKCU\Control Panel\International\sShortDate
zu Ihrem erkennbaren format. Dann auf%DATE%
um das Datum in das format, das Sie wollen; und schließlich wiederherstellen, das format zurück auf den ursprünglichen Benutzer format. So etwasaber diese Methode hat zwei Probleme:
it-Stampfer mit einem globalen Registrierungswert für seine lokalen insbesondere purpouses, so kann es zu Störungen mit anderen Prozessen oder Aufgaben des Benutzers, die zur selben Zeit Abfrage das Datum im kurzen Datumsformat, einschließlich sich selbst, wenn die gleichzeitig ausgeführt werden.
und es gibt die drei-Buchstaben-Tag in der Woche, in der lokalen Sprache, die kann unterschiedlich sein in verschiedenen Systemen oder verschiedenen Benutzern.
verwenden WMIC Win32_LocalTime, dass gibt das Datum zurück in eine bequeme Art und Weise direkt analysiert werden, mit einem
FOR
Befehl.dies ist die Methode, die ich empfehlen kann.
InformationsquelleAutor der Antwort PA.
paar mehr Möglichkeiten:
1.Robocopy nicht in XP, aber heruntergeladen werden können mit win 2003 resource tool kit .Könnte auch davon abhängen, Lokalisierung:
2.MAKECAB - funktioniert auf jedem windows-Rechner (schafft aber eine kleine temp-Datei).Funktion von carlos:
3.W32TM - verwendet-Befehl Schalter in Vista eingeführt wurde, also nicht auf windows 2003/XP:
4..bat/jscript hybrid (muss gespeichert werden .bat):
5..bat/vbscript hybrid (muss gespeichert werden .bat)
6.powershell heruntergeladen werden kann von microsoft.Standardmäßig verfügbar in alles zu bilden, win7 und höher:
7.WMIC schon als eine Antwort, aber wollen einfach nur eine vollständige Referenz.Und mit deaktiviert
<CR>
:9.Selfcompiled jscript.net (muss gespeichert werden, als
.bat
):InformationsquelleAutor der Antwort npocmaka
DOW steht 0 für Sonntag, 1 für Montag usw.
InformationsquelleAutor der Antwort Aacini
Ich dachte, dass meine erste Antwort-gibt den richtigen Tag der Woche als Zahl zwischen 0 und 6. Allerdings, denn Sie hatte nicht angegeben, warum diese Antwort nicht geben, das Ergebnis, die Sie wollen, kann ich nur raten, den Grund.
Batch-Datei eine log-Datei erstellen, jeden Tag mit einer Ziffer im Namen, 0=Sonntag, 1=Montag, usw... Das Programm davon aus, dass
echo %date%
zeigen Sie das Datum im MM/TT/JJJJ-format; wenn dies nicht der Fall, ändern Sie einfach die position von mm und dd Variablen in derfor
Befehl.Wenn dieses nicht ist, was Sie wollen, geben Sie bitte das problem, damit ich es beheben kann.
BEARBEITEN: die version, Die Sie unten get-date-Teile unabhängig von der locale-Einstellungen:
BEARBEITEN: die version, Die unter insert-Tag der Woche als 3-Buchstaben-Abkürzung:
Grüße,
Antonio
InformationsquelleAutor der Antwort Aacini
Dieser stellte sich heraus, viel mehr Komplex, dann habe ich zunächst vermutet, und ich denke, das ist es, was mich faszinierte, suchte ich an jedem Ort und zu den Methoden gegeben, würde nicht funktionieren auf Windows 7.
So, ich habe eine Alternative Lösung, die über ein Visual Basic Script.
Batch erstellt und führt das script aus(DayOfWeek.vbs), weist die Skripte ausgegeben (Montag, Dienstag usw) zu einer Variablen ("dow"), die variable wird dann geprüft und eine andere variable (dpwnum) zugewiesen mit der Anzahl Tage, danach wird die VBS gelöscht, hoffe es hilft:
EDIT:
Obwohl ich wandte mich an VBS, Es kann getan werden, in reiner Stapel, nahm mich eine Weile, um es arbeiten und viel suchen, lol, aber das scheint zu funktionieren:
Die einzige Einschränkung für Sie auf den obigen batch ist, dass der Tag der Wochen sind von 1-7 und nicht 0-6
InformationsquelleAutor der Antwort David Kroukamp
Dies funktioniert für mich
InformationsquelleAutor der Antwort Dan
Dies ist nicht meine Arbeit (gut, ich veränderte es etwas aus dem Beispiel), und es ist zu spät, um das Spiel, aber so funktioniert es auf dem Server 2003 für mich;
Zitat: TechSupportForum
InformationsquelleAutor der Antwort delliottg
First - Copy CON SETUPDAY.001
SET ARBEITSTAG=^Z (sehr wichtig - keine cr/lf)
%WOCHENTAG%, DIE IN IHREM SKRIPT
InformationsquelleAutor der Antwort Ted Waterbury
Locale-abhängige version: In einigen Umgebungen, die folgenden extrahieren wird der Tag-name aus dem Datum:
Es wird davon ausgegangen, dass die Tag-Namen ist der erste Teil
%date%
. Abhängig von den Einstellungen der Maschine, wenn der Teilstring Teil (~0,3
) ändern muss.Einer Aussage wie dieser würde dump in eine Datei mit einem drei-Zeichen-Tag-name:
Locale-unabhängig version:, Wenn Sie es brauchen weniger abhängig von der aktuellen Maschine Tag-format, einen anderen Weg, es zu tun, wäre die Erstellung einer kleinen Anwendung, die druckt den Tag der Woche. Verwenden Sie dann die Ausgabe von diesem Programm aus der batch-Datei. Zum Beispiel ist das folgende C-Anwendung druckt
dayN
wobei N=0..6.Wenn die oben genannten wurden zusammengestellt und miteinander verknüpft
myday.exe
haben, dann könnten Sie es aus einer batch-Datei wie folgt:InformationsquelleAutor der Antwort Mark Wilkins
Ich bin in den USA. Ich kann diesen code ausführen in Windows 7, Windows 2008 R2, Windows Server 2003, Windows XP (Alle Betriebssysteme werden aktuell mit Windows Updates und patches). Alle mit der Einstellung kurzes Datum ohne ddd - (oder dddd) (Tag der Woche).
Wenn heute Donnerstag ist, würde es die Ausgabe "Der Tag Ist: do".
Dieser gibt den Tag über alle 4 Windows-Versionen, die ich getestet habe. Und nur der Tag. Wenn ich änderte meine kurze Datum-setup "ddd, M/d/yyyy", meine Ausgabe würde zeigen Sie den Tag mit einem Komma (z.B. do /FR), was sagt mir dieser code ist für das kurze Datumsformat. Aber was auch passiert werden kann ist, dass, wenn das kurze Datum nicht enthalten ist der Tag der Woche, kann es Aussehen, um das lange Datum-format, das auf allen 4 Rechnern die ich getestet habe, haben dddd im format.
InformationsquelleAutor der Antwort user2316634
Habe ich diese Lösung für mich:
Erstellen Sie eine Datei namens dayOfWeek.vbs in der gleichen dir wo die cmd-Datei wird gehen.
dayOfWeek.vbs enthält eine einzige Zeile:
oder, wenn Sie wollen, Tag Nummer statt name:
Die cmd-Datei wird diese Zeile:
Nun können Sie variable dayName wie:
InformationsquelleAutor der Antwort Manuel Alves
Wenn Sie ändern, können format kurzes Datum in den PC zu "ddd-yyyy-MM-dd" (nur der erste parameter " TTT " ist obligatorisch), dann folgenden Befehl wird-
Dann Sie können schreiben Sie die batch-Datei -
InformationsquelleAutor der Antwort willstay
InformationsquelleAutor der Antwort Eamonn Deering
War auf der Suche, diese selbst zu tun und sah, Beschwerden über leere Zeilen:
InformationsquelleAutor der Antwort georges
Verbesserte Ich Aacini Antwort
um es Echo Vollen Tag der Woche Name
So, hier ist mein Code
InformationsquelleAutor der Antwort Omar Deif
Einer version mit MSHTA und javascript. Veränderung in %jsfunc% auf whateve jscript-Funktion, die Sie anrufen möchten
InformationsquelleAutor der Antwort Antoni Gual Via