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

Auf voherigen Tag zugreifen

Frage Entwicklung Batch & Shell

Mitglied: Joe.Baer

Joe.Baer (Level 1) - Jetzt verbinden

05.06.2013 um 18:09 Uhr, 1127 Aufrufe, 2 Kommentare

Hallo zusammen,
leider finde ich nicht das was ich suche.
Ich erstelle jeden Tag mit einer batch-Datei eine .txt Datei.
Die Dateien haben immer das Tagesdatum bei der Erstellung:

set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2%

set "datei2=%mydate% xxxxx.txt"
if exist "%datei2%" move "%datei2%" "%datei2%.bak"
echo %mydate% %mytime% %1 >"%datei2%"
if exist "%datei2%.bak" type "%datei2%.bak">>"%datei2%"

Dies ist auch soweit in Ordnung.

Jetzt möchte ich einen Tag später auf die Datei zugreifen und diese in einen Ordner verschieben. Wie kann ich dies realisieren bzw. wie kann ich af die Datei zugreifen?

Dank & Gruß Joe.Baer
Mitglied: Biber
05.06.2013, aktualisiert um 19:00 Uhr
Moin Joe Baer,

willkommen im Forum.

Der CMD-Befehlsumfang beinhaltet ja nun leider nix, was in Richtung "Datumsarithmetik" geht - es gibt schlicht und einfach keinen Datentyp "Datum/Zeit" im Befehlsinterpreter.

Also musst du hier Umwege gehen und dazu kannst du über unsere Suchfunktion einige Varianten finden.

Mogliche Lösungsstrategie a)
Die CMD.exe kennt zwar kein "Datum" und daher auch kein "gestern" oder "morgen", aber mit verfügbaren Standardtools wie VBScript/JScript können das durchaus. Ein VBScript kannst du aus der Batchdatei heraus temporär erzeugen, aufrufen und das Ergebnis für deine Zwecke verarbeiten. Suche mal nach "gestern.vbs" oder "yesterday.vbs" hier in der Forumssuche.

Mögliche Strategie b)
Die "gestern" erzeugte Datei, die verschoben werden soll, ist ja immer die "jüngste" Datei (mit der Namenskonvention "201?-??-?? xxxxx,txt", Die Datei(en) kannst du mit dem "DIR /od"-Befehl nach Datum sortiert anzeigen lassen und mit einer FOR-Anweisung die jüngste/älteste rausflöhen. Suche dazu nach "neueste Datei/älteste Datei"

Mögliche Alternativ-Strategie)
Verzichte auf den Datumsstempel im Dateinamen - mache es stattdessen über einen Zähler, eine laufende Nummer im Dateinamen,
Von Dateien der Konvention "Log_1024.txt", "Log_1025.txt, ..." (oder allgemein: von namensbezogen eindeutig sortierbaren Dateien) kannst du immer die letzte vorhandene und die nächste freie ermitteln (oder "berechnen").

Grüße
Biber
Bitte warten ..
Mitglied: Endoro
05.06.2013 um 21:48 Uhr
Hi Joe.Baer,

wie von Biber schon augeführt, gibts in cmd keine Funktion Date2Number. Wenn du also bei deinem Arbeitspfad bleiben möchtest, musst du diese Funktion selbst implementieren.

Dazu benötigst du zu aller erst einen Anker im Ozean der Zeit. Von diesem Fixpunkt an beginnst du einfach die Tage zu zählen, denn die brauchst du ja. Nun kannst du bequem das Datum in Tage umrechnen. Die Wahl des Fixpunktes bleibt dir überlassen, anbieten würden sich Kaisers Geburtstag oder der Hochzeitstag der Grossmutter

Wenn du keinen gesteigerten Wert darauf legst, den Nullpunkt selbst festzulegen, kannst du natürlich auf eine Funktion aus dem Netz zurückgreifen. Ich jedenfalls greife mir dann gern diese.

Gruss!
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...